2011-11-07 19 views
5

Mercurialを読んで、完全なリポジトリを常に分岐してマージするようです。Mercurialでは、2つのブランチ間でいくつかのファイルをマージできますか?

一部のファイルをあるブランチから別のブランチにマージすることは可能ですか? (たとえば、私は、特定のバグを修正するファイルをマージしたいだけかもしれません)。

同様にチェリーはいくつかの変更セットを選択できますが、まだ正しいマージレコードを持っています。正しい?

私はPERFORCEの "考え方"から来ているので、間違った方法を考えているかもしれません。

答えて

3

Mercurialを読んで、完全なリポジトリを に分けてマージすると思われます。

はい

それはちょうど別のブランチからいくつかのファイルをマージすることは可能ですか? (たとえば、私は与えられたバグを修正したファイルにマージすることもできます。)

だけ必要なチェンジでのみ「いくつかのファイルを」タッチし内の別のブランチまたは移植と頭の中でこのチェンジでブランチをマージ

いかなる時間は同様に私は桜、いくつかの変更セットを選ぶが、それでも私は、マージを完了ので、もし、正しいマージレコードを持つことができ、後に行われ、それが正しいのですか?

はい、移植できます。別のブランチへのチェンジセット、適用された状態が記憶され、最終的なマージ時に変更が複製されない

+0

ありがとう、私は、チェンジセットとブランチがマージできることを知らなかった。与えられたチェンジセット上のいくつかのファイル、またはいくつかのチェンジセットからのいくつかのファイルだけが必要な場合はどうなりますか? (それぞれの修正がうまく分離されていればいいかもしれませんが、reallifeは必ずしも良いとは限りません) –

+0

チェンジセットの一部のファイルは使用できません - あなたは**常に**フルチェンジセット**を別のツリーに適用します。 –

8

はい、Mercurialは常にツリー全体を分岐してマージします。 perforceのようなものが、マージのために個々のファイルを選択できるようにする「柔軟性」はありません。これは良いことです(私を信頼してください)。変更セットはアトミック(分割することはできません)と不変(変更できません)です。したがって、これには少しの考え方の変更が必要です。

変更セットは、1つのタスクと1つのタスクでのみ対象にする必要があります。あなたがバグを修正している場合、バグ修正とは別に、チェンジセットには何も入っていません。バグフィックスを文書化したチェンジセットがあり、それを分割したいという問題はありません。それは欲しいとは思えません。バグフィックスの半分は、しばしばバグ修正より悪いです。

それはオプションのカップルがありますことをマージしに来る:思考の

  • 一つの学校はあなたが戻ってバグが導入された場所に行く必要があると言います。修理する。コミット(小さな匿名ブランチを作る)し、あなたが望むあらゆる頭部にそれをマージする(dev、stable、release、それは何でも)。これは必ずしも実用的ではありません。
  • もう1つの方法は、リリースブランチでバグを修正してから、開発ブランチにマージする方法です。これは通常正常に動作します。
  • また、開発ブランチの先頭で修正することもできますが、リリースブランチにマージすると、開発の変更がすべて反映されます。これは、graftnew in 2.0)と古いtransplantという拡張子が入ります。それらを使用すると、別のブランチからのチェンジセットの1つまたは範囲を「チェリーピック」し、別のブランチに配置することができます。
+0

バグ修正がリリースブランチに入るという区別をつけることは、本当に私には分かりました。(例えば、あなたは悪意のあるマナーを悪いマナーに変えるために)あなたはそれを分割してマージしたり、パッチとして編集したり、実現。ありがとう。 –

関連する問題