Mercurial via TortoiseHg - Merge a named branch then close it

sharoz picture sharoz · Feb 1, 2011 · Viewed 26.6k times · Source

I have a named branch, NewFeature, that I made off of the default branch. I've made a couple commits to that branch, and now I'd like to merge it to rejoin the default branch.

Now (each letter is a commit):

   default: A---B
NewFeature:      \--C---D

What I'd like:

   default: A---B-----------E
NewFeature:      \--C---D--/

I tried right clicking the directory and selecting "Hg Commit...". I then selected "Close Current Named Branch". I got this error: abort: can only close branch heads

I also looked for a "close branch" option in the repository explorer, but I couldn't find anything.

Could someone please help? Thanks in advance!

Edit: I posted an issue to TortoiseHg

Answer

user276648 picture user276648 · May 8, 2012

The example you give is more a Merge than really a Close. Also, if it's that simple, you probably don't want/need to create a named branch.

But if you really want to close a branch through TortoiseHg, eg

  1. you created the NewFeature branch
  2. then both the Default branch and NewFeature branches were modified
  3. then if the NewFeature branch takes quite some time you might have also already merged several time Default into NewFeature (to avoid having too many differences when you'll want to finally merge the NewFeature branch into the Default one)
  4. eventually your new feature is entirely implemented or stable enough, you merged the NewFeature branch into the Default one

From now on, no one is supposed to commit anything on the NewFeature branch, so you'd like to close it.

You can do so in TortoiseHg (I have version 2.3.2):

  1. click Hg Commit... when you are on your NewFeature branch (no need to have anything to commit - or you do it with your final merge)
  2. click "Branch: NewFeature" (it's at the top in bold)
  3. select "Close current branch".