はい、Mercurialは常にツリー全体を分岐してマージします。 perforce
のようなものが、マージのために個々のファイルを選択できるようにする「柔軟性」はありません。これは良いことです(私を信頼してください)。変更セットはアトミック(分割することはできません)と不変(変更できません)です。したがって、これには少しの考え方の変更が必要です。
変更セットは、1つのタスクと1つのタスクでのみ対象にする必要があります。あなたがバグを修正している場合、バグ修正とは別に、チェンジセットには何も入っていません。バグフィックスを文書化したチェンジセットがあり、それを分割したいという問題はありません。それは欲しいとは思えません。バグフィックスの半分は、しばしばバグ修正より悪いです。
それはオプションのカップルがありますことをマージしに来る:思考の
- 一つの学校はあなたが戻ってバグが導入された場所に行く必要があると言います。修理する。コミット(小さな匿名ブランチを作る)し、あなたが望むあらゆる頭部にそれをマージする(dev、stable、release、それは何でも)。これは必ずしも実用的ではありません。
- もう1つの方法は、リリースブランチでバグを修正してから、開発ブランチにマージする方法です。これは通常正常に動作します。
- また、開発ブランチの先頭で修正することもできますが、リリースブランチにマージすると、開発の変更がすべて反映されます。これは、
graft
(new in 2.0)と古いtransplant
という拡張子が入ります。それらを使用すると、別のブランチからのチェンジセットの1つまたは範囲を「チェリーピック」し、別のブランチに配置することができます。
ありがとう、私は、チェンジセットとブランチがマージできることを知らなかった。与えられたチェンジセット上のいくつかのファイル、またはいくつかのチェンジセットからのいくつかのファイルだけが必要な場合はどうなりますか? (それぞれの修正がうまく分離されていればいいかもしれませんが、reallifeは必ずしも良いとは限りません) –
チェンジセットの一部のファイルは使用できません - あなたは**常に**フルチェンジセット**を別のツリーに適用します。 –