[PATCH 0 of 1] merge: add --no-fast-forward to suppress fast-forward merge

Mads Kiilerich mads at kiilerich.com
Mon Mar 7 11:46:59 CST 2011

On 03/07/2011 05:33 PM, Kevin Bullock wrote:
> With the 1.8 (fast-forward) behavior, it becomes impossible to distinguish between `hg branch -f foo`, meaning we're explicitly _replacing_ the 'foo' branch,

My mental model of named branches is that a named branch just designates 
the set of changesets that was "born" there. It is possible to add 
changesets to the set, but it is not possible to replace anything.

I don't read that much into the DAG structure. It just shows how 
change_sets_ are immediate subsets of each other. When changesets on a 
branch isn't directly connected it just tells me that development 
happened elsewhere.

The help for branch -f says "shadows an existing branch". That supports 
your point of view. I think it would be better if it said something like 
"reuse an existing branch".

I also think it is fine that merging with changesets on another named 
branch sometimes just "pulls" it in, just like pulling from another 
clone sometimes gives linear history and sometimes ends up with a merge.

All in my opinion,

More information about the Mercurial-devel mailing list