3

私は SVN バージョン 1.6 を使用していますが、コマンド ラインを使用したマージで多くの問題が発生しています。あるブランチから別のブランチに単一のリビジョン (リビジョン #5 と呼びましょう) をマージしようとしています。

コマンドラインを使用してマージしています。マージ先のブランチで CD を取得しており、次のコマンドを試しています。

  • svn merge -r4:5 FROMBRANCH .
  • svn merge -r4:5 FROMBRANCH
  • svn merge -c5 FROMBRANCH .
  • svn merge -c5 FROMBRANCH

これらのコマンドはどれも正しく機能していないようです。マージ コマンドを発行してから「svn status」を実行するたびに、非常に長いファイル リストが表示されます。このリストには、リビジョン #5 のファイルと、マージしたくない他の多くのファイルが含まれています。

(注: 「svn status」を使用してローカルでファイルが変更されていないことを確認しています。また、「svn revert . -R」を使用して、各マージ試行後に変更を元に戻しています)

何か案は?ありがとう!

4

1 に答える 1

3

「svn status」によって表示されるファイルの長いリストは、おそらく「mergeinfo」プロパティの更新によるものです。

ここで説明し たように、<ターゲット ブランチ> へのマージを実行すると、Subversion は、mergeinfo プロパティが設定されている <ターゲット ブランチ> のすべてのサブツリー内の既存の mergeinfo を更新します。

この予期しない動作は、Subversion 1.7 で対処されています。

( Subversion 1.7の変更ログから)

サブツリーがマージの影響を受けていない場合、マージはサブツリー (独自の明示的なマージ情報を持つ) にマージ情報 (マージを記述する) を記録しなくなりました。これにより、明示的な mergeinfo を持つ多数のサブツリーを持っているユーザーに対して、誤った svn:mergeinfo プロパティの変更の数が大幅に減少するはずです。

マージされる変更に svn:mergeinfo の変更が含まれている場合、これらは他のプロパティの変更と同様に適用されます。そのため、マージされる変更自体が 1.5 または 1.6 クライアントで実行された別のマージの結果である場合でも、サブツリーの mergeinfo が過度に変更される可能性があります。1.7 クライアントのみで作成および維持される新しいブランチで最良の結果が得られます。

于 2012-09-28T23:48:15.607 に答える