5

私は、素晴らしくシンプルな、1 つのヘッドを持つリポジトリのクローンを持っています。他の人の変更を取り込んだ後、ヘッドをカウントしてマージが必要かどうかを確認するスクリプトを作成しました。しかし、他の人がブランチを作成してマージした場合、"hg heads" は 2 つのヘッドを表示し、スクリプトはマージする必要があると判断します。テストは本当にどうあるべきですか?

前:

0 - 1

後:

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

これはマージする必要はありません。しかし、前後の頭の数を単純に比較すると、そうであることが示唆されます。この場合、Mercurial が複数の頭を表示するのはなぜですか?

4

3 に答える 3

4

hg headscallを呼び出す代わりに、トポロジーhg heads --topoの頭だけを表示します。つまり、子供がいない人です。マージされたブランチのヘッドが表示されますが、マージされたため、トポロジのヘッドではなく、抑制されます。--topo

于 2012-04-24T16:17:09.590 に答える
3

ブランチ名にスペースが含まれていない場合は、次のスクリプトを使用できます。

#!/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

開いている各ブランチを繰り返し処理し、そのブランチのヘッド数をカウントします。

于 2012-04-24T13:30:17.810 に答える
0

プルする前にリポジトリのクローンを作成し、後で。を使用してクローンにプッシュすることができます--new-branch。それが新しい頭について不平を言うなら、あなたは合併する必要があります。

于 2012-04-24T12:29:12.797 に答える