祖先とマージできないという技術的な理由はありません。あなたが見つけたように、Mercurialはそれをサポートしていることがあります。したがって、純粋にGUIの制限です。この背後にある理由は、hg update
がhg merge
と同じ結果を示す場合は、単純にするためにその代わりに使用する必要があります。
mergeは、3つのリポジトリ状態の組み合わせです:共通の祖先と、マージしている2つのチェンジセット。 3ウェイマージは、ハンクベースでハンクで行われます。リモートでローカルマージするための表では、次のようになります。そして、ancestor == local
remote
の祖先である
ancestor local remote -> merge
old old old old (nobody changed the hunk)
old new old new (I changed the hunk)
old old new new (you changed the hunk)
old new new new (hunk was cherry picked onto both branches)
old foo bar <!> (conflict, both changed hunk but differently)
local
場合。だから、テーブルは次のようになります。どちらの場合も
ancestor local remote -> merge
old old old old (nobody changed the hunk)
old old new new (you changed the hunk)
、merge
列はremote
列であったものが含まれています。あなたの例では、local
はdefault
とremote
ですfile-content
です:
$ hg update default
$ hg merge file-content
結果はちょうどfile-content
ように見えるマージチェンジセットです。
このトピックを公開する依頼 –
このチェンジセットの履歴を取得するために、この例ではどのようなコマンドが使用されましたか?コマンドラインで再作成することはできません。 – Jegschemesch