Can I mark a branch as 'not going to push'?

George Mauer picture George Mauer · Jan 25, 2012 · Viewed 7.7k times · Source

I use named branches in Mercurial.

In doing so I have created one branch called playground where I can try out various wacky experiments. I never intend to merge this branch into any others and I never want to push it to our main repository.

Since creating it, every time I do a push I am told I have added a new branch and I have to use the --new-branch flag. At this point hg push -b default (or whatever branch I'm pushing) works fine but it's annoying. Is there any way to suppress that message by letting Hg know that I am not interested in pushing that branch ever?

Answer

Martin Geisler picture Martin Geisler · Jan 25, 2012

Starting with Mercurial 2.1 (released in February 2012), you can mark your changesets secret to keep them from being pushed to another repository. You use the new hg phase command to do this:

$ hg phase --force --secret .

This mark the current working directory parent revision (.) as being in the secret phase. Secret changesets are local to your repository: they wont be pushed or pulled. Pushing now looks like this:

$ hg push
pushing to /home/mg/tmp/repo
searching for changes
no changes to push but 2 secret changesets

There is no equivalent mechanism in older versions of Mercurial. There your best bet is to create a local clone for the changesets you don't want to push.