1

トランクで 3 つの異なるファイル、たとえばリビジョン 40、45、47 に変更を加えた場合、リビジョン 15 以降変更されていないファイルがある場合、これらのリビジョンをブランチにマージするにはどうすればよいですか (リビジョン 30 で作成され、それ以降は変更されていません)。 ) それぞれのファイルのリビジョン 15 とリビジョン 40、45、および 47 の間の変更のみを取得するにはどうすればよいですか?

中間のリビジョンで他の変更が行われましたが (明らかに)、問題のファイルには影響しません。これらの変更をブランチに反映させたくありません。

4

2 に答える 2

1

それらのコミットでそれらのファイルにのみ変更を加えた場合は、先に進んでそれらのリビジョン番号をマージしてください。それらのコミットで他のファイルが変更されていて、それらの変更を望まない場合は、おそらく先に進んでマージを行い、変更したくないファイルの変更を元に戻してからコミットします。

于 2008-12-23T17:51:10.390 に答える
0

私たちのシステムでは、このようなマージを常に行っています。ほとんどの場合、すべてがうまく機能します。

3 つのリビジョンすべてでマージを実行できます。変更が相互に依存していない限り、問題はありません。

TortoiseSVN を使えば簡単40,45,47に範囲指定で指定できるので便利です。svn mergeそれ以外の場合は、リビジョンステートメントごとに個別に発行するだけで、すべてがまとめられます。

プルしていない変更が同じ行に影響を与える場合、マージの競合が発生します。これは、競合を解決するためにすぐに確認する必要があることを意味するため、最良のシナリオです。ただし、いつものように、競合がなかったからといって、コンパイル/実行時に論理エラーが発生しないわけではありません。

私は個人的に、自動化されたスクリプトを使用して、これらを週に数百回実行しています。私たちのコードの構造 (ほとんどの変更が同じファイルに影響を与えない大規模なリポジトリ) のため、競合は週に数回しか発生しません。

于 2008-12-23T20:45:48.027 に答える