私は 2 つの Mercurial リポジトリを持ってgeneric
おりspecific
、これは最初のリポジトリのクローンです。
$ hg glog -R generic
@ changeset: 0:d516ded3bf0a
summary: generic project commit
$ hg glog -R specific
@ changeset: 3:5f7b2efea94b
| summary: added another specific project change
o changeset: 2:e2ad52001bcf
| summary: added generic project change (backport)
o changeset: 1:a4220a2c7a80
| summary: added specific project change
o changeset: 0:d516ded3bf0a
summary: generic project commit
specific
ここで、変更セット 2 をにバックポートしたいと思いgeneric
ます。変更セット 1 と 3 は追加したくありません。cs 2 (cherry-pick) だけを追加します。移植と移植の2つの選択肢があるようです。specific
移植は、パッチを別のリポジトリ (私の場合は からへ)から移動できるため、問題ありませんがgeneric
、マージ機能が制限されています。一方、グラフトはよりスマートなマージを提供しますが、別のレポからのグラフトはサポートしていません (同じブランチ間のみ)。
目標は、変更セット 2 のみを に追加するspecific
ことgeneric
です。これが私が成功せずに進めた方法です。
$ cd specific
$ hg up 0 # the common ancestor
$ hg branch backport-cs2
$ hg graft 2
$ hg glog
@ changeset: 4:1405acc4a121
| branch: backport-cs2
| tag: tip
| parent: 0:d516ded3bf0a
| summary: added generic project change (backport)
|
| o changeset: 3:5f7b2efea94b
| | summary: added another specific project change
| |
| o changeset: 2:e2ad52001bcf
| | summary: added generic project change (backport)
| |
| o changeset: 1:a4220a2c7a80
|/ summary: added specific project change
|
o changeset: 0:d516ded3bf0a
summary: generic project commit
ここまでは順調ですね。backport-cs2
最後のステップは、 のブランチをspecific
のデフォルト ブランチにプルすることですgeneric
。
$ cd ../generic
$ hg pull -b backport-cs2 ../specific
$ hg glog
o changeset: 1:1405acc4a121
| branch: backport-cs2
| tag: tip
| summary: added generic project change (backport)
|
@ changeset: 0:d516ded3bf0a
summary: generic project commit
これで、generic
必要な変更セットがありますが、デフォルトで使用したいのですが、新しいブランチにあります。それを行う方法について何か提案はありますか?バックポートへのより良いアプローチのアイデアも高く評価されます。