2

状況は次のとおりです。

チームは、長期的なフィーチャー ブランチ (18 か月) に取り組みました。トランクを定期的にこの機能ブランチにマージします (最初は毎月、その後は 2 ~ 3 か月ごと)。

今日は、再統合機能を使用して、機能ブランチをトランクにマージしたいと考えています。

問題は、次のものが大量に (数千!) あることです。

branches/feature/dir/file.foo
Missing ranges: /trunk/dir/file.foo:94959

しかし、svn ログを確認すると、94000 ~ 96500 の範囲が実際に過去にマージされたことがわかります。

ここで何が起きてるの?そうでない場合、svnが「範囲の欠落」について不平を言うのはなぜですか? 94000-96500 のマージ情報が表示された場合、r94959 が見つからない理由はありますか? どうすればこれを修正できますか (数千のリビジョンが「欠落」していると言いました)。

ご協力ありがとうございました。

4

1 に答える 1

1

これは通常、次のシナリオで発生します。

  1. あなたのトランクには、並行して動作するようないくつかの2つのブランチがbranch1ありました。branch2
  2. branch1最初に作成され、次にbranch2作成されます。ただし、branch2最初に変更が完了し、トランクに再統合されます。
  3. その後、再統合する前に、トランクから(not ) を実行して競合を解決するbranch1必要があります。svn mergesvn merge --reintegratebranch1
  4. そして、この間に、プロパティが変更され、一部が更新されたいくつかのフォルダーを取得する場合がありますmerge-info。これらはプロパティの変更のみであるため、これらのフォルダーをコミットしないと、のマージmerge-info中に同様の問題が発生する可能性があります。reintegratebranch1

これがあなたのシナリオである場合、試すことができる解決策はsvn merge、トランクからbranch1再度実行することです。merge-infoこれにより、フォルダー内のプロパティが再度更新され、それらが にコミットされますbranch1。次に、svn merge --reintegratefrom branch1to トランクで再試行します。

于 2013-02-13T19:56:09.713 に答える