Mercurial 2.0?: graft: 3-way マージアルゴリズムを使った cherry-picking

2011 年 10 月 13 日 はてなブックマークへ追加 はてなブックマーク - Mercurial 2.0?: graft: 3-way マージアルゴリズムを使った cherry-picking Bookmark this on Delicious

hg transplant に代わる機能として、 graft というコマンドが Mercurial 2.0 に入りそうだ。 単純なパッチ当てだった transplant に対し、 graft は 3-way マージを使うぶん衝突が起こりづらいという話だろう。

コードを斜め読み した限り、仕組みはこんなだと思う:

(C) の続きに (E) を移植しようとすると、

              wdir
(A)----(B)----(C)
 \
  \
   (D)----(E)

(C)(E) の共通の親(祖先)が (D) だった」という つもり でマージし、

              wdir-->wdir'
(A)----(B)----(C)----(E')
       :              /
      :              /
   (D)----(E)--------

最後にマージチェンジセット (E') の第 2 の親 (E) を切り離す。

                     wdir'
(A)----(B)----(C)----(E')
 \
  \
   (D)----(E)

コメント

blog comments powered by Disqus