2

で本当に厄介な問題に直面していSVN mergeます。トランクをブランチにマージしたい。通常はかなり単純ですが、今回は大きな変更があったため、段階的に処理する必要があり、SVN はそれを評価していないようです。

リビジョンAでブランチを作成し、リポジトリがリビジョンBになったとします。トランクには、S1S2などのサブディレクトリがほとんど含まれていません。複雑さを理解するために、B は A の後に約 1000 回のリビジョンがあり、トランクに多くの変更が加えられています。多くの競合とツリーの競合がありました。

段階的に処理するために、最初に S1 をマージし、次に S2 をマージすることを選択し、B のマージがすぐに行われることを望みました。コマンドを使用しましたsvn merge https://myrepo/trunk/S1 myBranchWorkingCopy/S1

S1 マージは苦労しましたが成功しました。S2も同様。

希望に満ちた のドライランを開始し、svn merge --dry-run https://myrepo/trunk myBranchWorkingCopy更新されたプロパティのみが表示されるのを待ちます。私は熱心すぎました...その代わりに、S1またはS2で解決したすべての競合(ツリーまたはテキスト)を再度解決する必要があります...

私の結論は

トランクに S1 + S2 が含まれる場合、merged(S1) + merged(S2) != merged(trunk) ?!?

私は何か見落としてますか?すべてのサブディレクトリがマージされ、トランクを即座にマージする必要があることをSVNに伝えるにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

--record-onlyフラグを使用してサブフォルダーにマージして戻すことで機能するはずです。これにより、Subversionは変更が両側にあることを認識します。Subversionブックの「 AdvancedMerging 」セクションの「KeepingaReintegratedBranchAlive」のセクションを参照してください。

(最初に小さなサンプルで試してみてください。)

于 2012-01-30T11:50:52.597 に答える