2012-04-24 101 views
4

我有一個倉庫的克隆有一個頭,很好,很簡單。引入其他人的更改後,我有一個腳本來計算頭部以查看是否需要合併。但是如果另一個人成立了一個分支併合並了它,「hg heads」就會顯示出兩個頭,腳本認爲它必須合併。測試真的應該是什麼?如何判斷Mercurial拉出後是否需要合併?

前:

0 - 1 

後:

0 - 1 - 2 - 3 
    \/
    4 (branch) 

這並不需要合併。但是,前後頭部數量的簡單比較將表明它的確存在。爲什麼Mercurial在這種情況下甚至會顯示多個頭?

+1

「hg heads default」不會顯示默認分支上的頭像嗎? – 2012-04-24 12:51:28

+0

是的,那是有效的。 – 2012-04-25 09:51:42

回答

4

而不是打電話hg heads致電hg heads --topo其中只顯示拓撲頭 - 那些沒有孩子。你看到了他們合併分支的頭,但是因爲它被合併在它不是一個拓撲頭部,並且會壓制它。

+0

非常好!這是一種「正常工作」的標誌! – 2012-04-25 09:44:34

+1

但是,理解「頭」並不意味着「沒有孩子」,而是意味着「在同一個分支中沒有孩子」是很重要的,特別是如果你使用的是修訂版。 – 2012-04-25 13:17:00

0

您可以在拉動之前克隆您的回購,然後用--new-branch推入克隆。如果抱怨新的頭像,你需要合併。

2

如果你沒有在你的分支名稱空間,那麼你可以使用這個腳本:

#!/bin/sh 

for b in $(hg branches -q); do 
    h=$(hg heads --template "." $b) 
    if test ${#h} -gt 1; then 
     echo "Branch $b needs merging, it has ${#h} heads" 
    fi 
done 

它遍歷每個打開的分支和計算就可以了磁頭的數量。

+1

如果stackoverflow允許兩個答案被標記,我也會接受這個答案。在我的情況下,我只能測試默認分支,所以代碼甚至不再存在。這適用於比--topo更老的版本。 – 2012-04-25 09:48:00

+0

這讓我走上了正確的道路,我現在認爲這是看到'hg head。'說的。就像OP一樣,我總是在默認分支上......此刻,但有一天可能會改變。這裏的'.'與@Martin傳遞給模板開關的意義不同。 – 2017-10-20 22:17:34

相關問題