Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Push secret changesets

That may look paradoxical, I know that secret changesets are meant to be private, but what if I want to backup those secret changesets?

I work with some branches in parallel and sometimes I want to push one, but not the others. To achieve that, I work in separate clones but I hate that.

So now mercurial has phases, I can make secret branches and have everything in the same repository. The problem is that between the beginning of the secret branch and its publication, I want to backup those secret changesets (I have a clone in another machine just to hold my backups in case something happens with my local repo or my machine).

Is there a way of doing that or my workflow is completly wrong?

like image 254
Rafael Piccolo Avatar asked Apr 05 '12 13:04

Rafael Piccolo


1 Answers

It seems like phases are still relatively new and some workflows, such as this, don't seem to be included, yet. As of 2013-03-19, I believe the only way you can do this is manually changing the phases from secret to public.

You can use these commands from the command line:

for /f "delims=" %a in ('hg log --template "{rev} " -r "secret()"') do @set secret=%a
hg phase -d %secret%
hg push -f
hg phase -sf %secret%

This doesn't change the commits to secret on the repository you are pushing to, I tried to change the push to do this (but was unsuccessful):

hg push -f --remotecmd hg phase -sf %secret%

The commits would have to match exactly for the remote hg command to work, but I couldn't get it to change on the remote repository anyway.

============================================================

If you want to use a GUI like TortoiseHG Workbench you will have to do this all manually (change the phases in the GUI on any repositories you want to) at the moment. Sorry, and hopefully, we can find a better solution, soon!

like image 63
Ian Gardner Avatar answered Sep 19 '22 11:09

Ian Gardner