2011-07-19 16 views

回答

5

使用revsets

"ancestor(single, single)" 
     Greatest common ancestor of the two changesets. 

$ hg log -r 'ancestor(rev1, rev2)' 
+0

**祖先(集)**是完美的! – gavenkoa

+0

谢谢,这正是我所需要的。 –

5

对于水银:

hg debugancestor rev1 rev2

+0

感谢您的回答。该命令隐藏** hg help **,但可以查看是否输入** hg debug **。不幸的是,这个命令只允许两个变更集,git-merge-base允许任意数量的变更集。 – gavenkoa

+3

@gavenkoa我相信Mercurial不允许在一个提交中合并两个以上的分支(一个git章鱼合并)。 Mercurial开发者可能并不认为需要一个命令来找到你不允许的合并的共同祖先。 –

+0

但这种功能是有用的。如果你有3个或更多的banches用** hg merge **传播更改,要找到在哪个版本中启动了bugfix/feature-development来避免* cherry-picking *。看看我的问题http://stackoverflow.com/questions/6709365/how-to-move-bugfixes-across-branches-in-dvcs – gavenkoa

8

对于芭莎:

bzr find-merge-base /path/to/branch1 /path/to/branch2 

(该命令从主命令集的隐藏,你可以用bzr help commands获取。使用bzr help hidden-commands查看其他隐藏命令)。

+0

看起来这个*应该*工作,但是对于我来说它总是返回当前的revid(当传递revid或revnos时)。 –