hg transplantの基本的な使い方を覚えた。
~/.hgrcか.hg/hgrcにこれ↓をいれると使えるようになる。
[extensions] transplant=
transplantした結果は.hg/transplant/transplantsに記録されるようだ。ただhg cloneしたときに引き継がれないので注意が必要か。このへんが基本機能のmergeと扱いが違うところ。CVSではcherry pickが基本だったのでユーザがどこをマージしたのかを覚えておかなければならなかったが、hgではグラフ構造でマージ関係を覚えるのでマージがとてもわかりやすくなった一方で、特定の変更だけをとりこむことができなくなり、拡張機能として hg transplat が用意されている、とおもう。
以下ためしてみたときのログ。画像は https://bitbucket.org/koie/hg-dot/ で作成した。
% hg init repo
% cd repo
% echo "11111" >file
% hg commit -A -m initial file
% echo "22222" >>file
% hg commit -m second file
% echo "33333" >>file
% hg commit -m third file
% hg glog --style compact
@ 2[tip] 4c711a087ccd 2010-12-28 13:39 +0900 koie
| third
|
o 1 2a9a9bbae480 2010-12-28 13:39 +0900 koie
| second
|
o 0 7c68bdadd780 2010-12-28 13:38 +0900 koie
initial
% hg up 1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
% echo "XXXXX" >>file
% hg commit -m hack file
created new head
% hg glog --style compact
@ 3[tip]:1 f983fc95151f 2010-12-28 13:41 +0900 koie
| hack
|
| o 2 4c711a087ccd 2010-12-28 13:39 +0900 koie
|/ third
|
o 1 2a9a9bbae480 2010-12-28 13:39 +0900 koie
| second
|
o 0 7c68bdadd780 2010-12-28 13:38 +0900 koie
initial
% echo "YYYYY" >>file
% hg commit -m hack2 file
% hg glog --style compact
@ 4[tip] c80cf7c8095d 2010-12-28 13:43 +0900 koie
| hack2
|
o 3:1 f983fc95151f 2010-12-28 13:41 +0900 koie
| hack
|
| o 2 4c711a087ccd 2010-12-28 13:39 +0900 koie
|/ third
|
o 1 2a9a9bbae480 2010-12-28 13:39 +0900 koie
| second
|
o 0 7c68bdadd780 2010-12-28 13:38 +0900 koie
initial
% cat -n file
1 11111
2 22222
3 XXXXX
4 YYYYY
% hg up 2
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
% cat -n file
1 11111
2 22222
3 33333
% hg transplant 4
applying c80cf7c8095d
patching file file
Hunk #1 FAILED at 0
1 out of 1 hunks FAILED -- saving rejects to file file.rej
patch failed to apply
abort: fix up the merge and run hg transplant --continue
% cat file.rej
--- file
+++ file
@@ -1,3 +1,4 @@
11111
22222
XXXXX
+YYYYY
% cat -n file.rej
1 --- file
2 +++ file
3 @@ -1,3 +1,4 @@
4 11111
5 22222
6 XXXXX
7 +YYYYY
% cat -n file
1 11111
2 22222
3 33333
% (EDIT)
% cat -n file
1 11111
2 22222
3 33333
4 YYYYY
% hg transplant --continue
c80cf7c8095d transplanted as 22e2895df1d2
% hg glog --style compact
@ 5[tip]:2 22e2895df1d2 2010-12-28 13:43 +0900 koie
| hack2
|
| o 4 c80cf7c8095d 2010-12-28 13:43 +0900 koie
| | hack2
| |
| o 3:1 f983fc95151f 2010-12-28 13:41 +0900 koie
| | hack
| |
o | 2 4c711a087ccd 2010-12-28 13:39 +0900 koie
|/ third
|
o 1 2a9a9bbae480 2010-12-28 13:39 +0900 koie
| second
|
o 0 7c68bdadd780 2010-12-28 13:38 +0900 koie
initial
%

















