2011-07-19 21 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時)。 –