この図は、共通の祖先が 1 つではなく 2 つあることを示しています。したがって、1 つまたは別の共通の祖先を選択することでマージの問題が発生する、交差するマージ ケースのように見えます。
参考文献:
新しいマージ アルゴリズムの提案があります ( https://www.mercurial-scm.org/wiki/ConsensusMerge )。ただし、Mercurial の 2.3 スプリント以降、このトピックは行き詰まっています。
この種の問題を軽減するために、開発者が公式リポジトリとのみマージできるように、クライアント サーバー トポロジを確立することをお勧めします。多分 rebase も役立つかもしれません。
交差マージは次のようなものです。
B --- D
/ \ / \
/ \ / \
A X F
\ / \ /
\ / \ /
C --- E
あなたの場合、それは:
B
-----------o---- } stable/production
C \ \ F
------o------o---\------o } default
\ D \ /
-----------o--- } feature
E
A = ?
B = 14318
C = 14294
D = 14319
E = 14321
F = ?
を生成するF
には、 と の 2 つの回路が考えられB-D-E-F
ますC-D-E-F
。Mercurial は後者を選択しました。
運用ブランチと機能ブランチをマージしていなければ、交差を回避できたはずです。ホットフィックスは、デフォルト ブランチを介して機能ブランチに伝播された可能性があります。ログは次のようになります。
B
-----------o } stable/production
C \ F
------o------o------o } default
\ D \ /
-------o--- } feature
E