Getting rid of non-topological heads in Mercurial

mercurial

Solution

Short answer: No

Illustrated answer

`>hg glog --template "{rev}-{branch}\n"`

o  9-German
|
| @  8-default
| |
o |  7-default
| |
o |  6-default
| |
o |  5-default
| |
| o  4-default
| |
| o  3-default
| |
| o  2-default
| |
| o  1-default
|/
o  0-default

`>hg heads`

changeset:   9:62eaf0f52632
branch:      German

changeset:   8:39b0fec94839

changeset:   7:d98a89a763cf

`>hg up 7`

`>hg commit --close-branch -m "Close variation"`

`>hg heads`

changeset:   9:62eaf0f52632
branch:      German

changeset:   8:39b0fec94839

New topological head will appear only in case of creating (non-closed) childs of 10

Problem

I have the following situation in my repository: ``` A----B----F----G----(long time)----H <- default branch, H is what I'm working on \ C----D <- default branch, long time ago \ E <- non-default named branch ``` I'm working in the default branch, the current revision is H, the tip. Sadly in historic times, someone worked on D and then branched this into a named branch, in revision E. (This was actually an SVN import, but that doesn't matter). Until now, that was not a problem, because D is not a topological head. But nowadays I use buildbot to perform some testing and buildbot complains about multiple heads in the default branch. This is correct, because it uses `hg heads` to determine the default heads. How can I get rid of D being a head of the default branch? I thought about closing D via `hg commit --close-branch`. But doesn't that create an actual topological head?

Original source