頭が2つあります。1つは私たちの主な開発責任者であり、もう1つは私が今日まで忘れていたものです。バグを見つけてメインの開発ブランチで修正しましたが、古いブランチでも修正する必要があることに気づきました。
古いブランチに変更を加えて、それを最新のブランチとマージしたほうがよかったと思いますが、そのようにはしませんでした。Mercurialはこれを処理できますか?私たちはこのようなことをしようとはしていませんし、それがどのように行われるかについて頭を悩ませることはできません。
頭が2つあります。1つは私たちの主な開発責任者であり、もう1つは私が今日まで忘れていたものです。バグを見つけてメインの開発ブランチで修正しましたが、古いブランチでも修正する必要があることに気づきました。
古いブランチに変更を加えて、それを最新のブランチとマージしたほうがよかったと思いますが、そのようにはしませんでした。Mercurialはこれを処理できますか?私たちはこのようなことをしようとはしていませんし、それがどのように行われるかについて頭を悩ませることはできません。
はい、2 つの適切なオプションがあります。
このバージョンでは、インテリジェントな方法で変更をバックポートできるグラフト コマンドが導入されました。「インテリジェンス」は、内部でマージを使用することであり、これはあなたが得ることを意味します
名前変更のサポート:foo.c
開発ブランチのファイルのバグを修正したとします。古いメンテナンス ブランチfoo.c
では、 と呼ばれてbar.c
いました。を使用するhg graft
と、 への変更をfoo.c
古い に正しくマージできますbar.c
。
3 方向マージ:グラフトには、グラフをひねり、その一時的なグラフにマージすることが含まれます。3 方向マージの利点は、通常のグラフィカル マージ ツールを使用して競合を解決できることです。
のヒントをdefault
あなたにコピーするには、old-branch
単に実行します
$ hg update old-branch
$ hg graft default
移植コマンドができる前は、移植拡張機能が最適でした。この単純な拡張機能は、変更セットをパッチとしてエクスポートし、そのパッチを他のリビジョンに適用しようとします。
「ダム」パッチを扱っているため、名前の変更などは考慮されず、3 者間マージがないため、マージ ツールのサポートが得られません。それにもかかわらず、実際には移植が非常にうまく機能することがわかりました。
移植の使用は簡単です。
$ hg update old-branch
$ hg transplant default
これは実行に非常に近いです
$ hg update old-branch
$ hg export default | hg import -
ただし、移植は移植された変更セットに元の変更セットを記録するメタ データの一部も追加します。これは、将来の移植をスキップするために使用できます。