0

シナリオは次のとおりです。

1) 私は branchA を持っています 2) 私は trunkA を持っています

これらはどちらも無関係です。つまり、それらに至るまでのパスが異なります。BranchA は、ある時点で TrunkA のコピーでした。

そのため、trunkA をコア開発トランクとして使用する際に、branchA に特定の変更をマージして、一部のコード コード ファイルにもコード変更が含まれるようにするよう求められました。

わかりました。Tortoise ダイアログでリビジョン範囲によるマージを選択します。しかし、ここに問題があります。チェックインする変更セット (私のレポセット) が賢くないか、リビジョンの範囲で特定のファイルを除外するオプションがあるかどうかわかりません。

問題は、特定のストーリーに取り組んでいる間にコーディング中に飛び込んだクラスのクリーンアップを行う場合があるためです。など。これは、すべての開発者が行うべきことです (ボーイスカウト ルール)。

問題は、私がそれを行うと、おそらく希釈されると思います. つまり、クリーンアップの変更を独自のコミットで分離する必要があります。

問題は、リビジョンの範囲をマージしていて、「その他のクリーンアップ」を行った場合、コア ファイルの変更の一部を branchA にマージするときに、そのクリーンアップの一部を含めたくない場合があるためです。たぶん、特定のストーリーを移動したいだけかもしれませんが、問題はちょっと、それらのレポ#のいくつかに、それらをクリーンアップするために変更した他のファイルも含めました。

私の質問は、おそらくコミットをよりクリーンにする必要があるということです。物をしっかりと仕分ける。作業していた一連のクラスの「周辺」で一連のクリーンアップ変更が行われている場合は、待機して、独自のコミット インスタンス (独自のリポジトリ番号) でそれらをコミットします。そうすれば、範囲マージを行うたびに、意図したとおりの結果が得られます。svn には、範囲マージ中に特定の repo# でこれらのファイルを取り除く方法があるとは思いません。

考え?

4

1 に答える 1

0

私があなたの問題を正しく理解していれば、TrunkA から BranchA までの範囲のリビジョンをマージしたいと考えています。しかし、BranchA のローカル作業コピーにはコミットされていない変更 (処理しているクリーンアップ ストーリーに関連するもの) があり、マージ後のコミットとは別にこれらの変更をコミットしたいですか?

それが問題であれば、このような解決策を得ることができます。

  • BranchA の新しい作業コピー (WC2 と呼びます) をチェックアウトし、ここでリビジョンの範囲のマージを実行します。
  • 次に、それをコミットします。その後、ストーリーのクリーンアップを実行している作業コピー (WC1 と呼びます) に戻ります。
  • WC1 で SVN の更新を行います。ここで更新された WC2 からコミットしたマージの変更を取得します。
  • そこに本当の解決策があります。この更新プログラムの各ファイルで発生する可能性のある 3 つの主要なシナリオを検討する必要があります。

シナリオは次のとおりです。

  1. WC1 でファイルが変更されておらず、TrunkA でファイルが更新されている- ローカル ファイルは変更されておらず、サーバーから最新の更新を取得するだけなので、これも問題の原因ではありません。
  2. WC1 でファイルが変更された (コミットされていない) & TrunkA でファイルが更新されていない- これらのファイルの更新では何も起こらず、クリーンアップの変更が損なわれていないため、問題は発生しません。
  3. WC1 で変更されたファイル (コミットされていない) と TrunkA で更新されたファイル- これは、更新プロセス中に SVN 競合に陥る可能性があるものです。次に、これを1つずつ調べて、競合を修正できます。それは、ここで消費される時間を取得するものです。

この後、WC1 でクリーンアップ ストーリーを完成させ、後でコミットします。

これにより、コミット履歴で両方のタスクが分離されます。

于 2013-06-14T13:26:48.077 に答える