web-dev-qa-db-ja.com

Subversion 1.5でブランチをトランクに再統合する際の範囲エラーメッセージの欠落

開発ブランチをSubversion 1.5リポジトリのトランクに再統合しようとしています。この操作の前に、トランクから開発ブランチへのすべての変更をマージしました。ここで、ブランチからの変更を再統合しようとすると、次のエラーメッセージが表示されます。

Command: Reintegrate merge https://dev/svn/branches/devel into C:\trunk  
Error: Reintegrate can only be used if revisions 280 through 325 were previously   
Error: merged from https://dev/svn/trunk to the reintegrate   
Error: source, but this is not the case:  
Error:   branches/devel/images/test  
Error:     Missing ranges: /trunk/images/test:280-324  
...

その後、私のプロジェクトのいくつかのフォルダについてメッセージが表示されます。しかし、トランクから開発ブランチへの変更を再度マージしようとすると、TortoiseSVNはマージするものがないことを通知します(以前にすべての変更を既にマージしているため)。

Command: Merging revisions 1-HEAD of https://dev/svn/trunk into C:\devel, respecting ancestry  
Completed: C:\devel  

私はここからの指示に従うようにしています: http://svnbook.red-bean.com/en/1.5/svn.branchmerge.basicmerging.html 、しかしそのような問題を解決することについて何もありません。

何か案は?おそらく、トランクを削除してからブランチのコピーを作成する必要がありますか?しかし、それが安全かどうかは本当にわかりません。

こちらもご覧ください

-reintegrateを指定したsvn mergeで範囲が不足しているというメッセージが表示されますが、mergeinfoは正しいようです

26
pako

まず、trunkからブランチにリビジョンr280からr324をマージする必要があります。

すでにr325をブランチにマージしているようですが、-reintegrateはマージされた最新のリビジョンまでのallリビジョンを取得する必要があります。ギャップがあってはなりません。だからここに少しDiag:

           +----------------------> /branches/devel
          /                    /   \<--merge not working!
 --------/-------+--+---+-----+---------> trunk
         |       \  |  /      |
        280       \ V /      325
                    V
                  missing sync merges from trunk to branch

これはブランチ構造なので、トランクからブランチへのすべての変更を同期する必要があります。 r325のみをマージしたので、r280-r324をマージし、これを行った後は--reintegrateを使用してください

26
Peter Parker

私たちはこの問題に数週間苦労し、ようやく解決しました。

私たちの場合、私たちは毎日、すべてのトランクリビジョンとマージされるブランチに取り組みました。再統合(トランクにマージ)しようとすると、このエラーが発生しました。不足している範囲をブランチにマージしようとすると、マージするものがないというメッセージが表示されました。これは、いくつかの無関係なブランチで、異なるファイルとフォルダで発生しました。

不足している範囲をブランチのファイルまたはフォルダーのsvn:mergeinfoプロパティに追加することで解決しました。

受け取ったメッセージの「Missing range:path:revision_range」行ごとに:

  • マージされたブランチで言及されているファイル/フォルダーのsvn:mergeinfoプロパティを編集します
  • プロパティ値の最後に次の文字列を追加します(例:/ trunk/images/test:280-324)
  • SVNプロパティを保存する

すべての変更をコミットして、再統合します

27
Maor Cohen

私はこの問題を抱えていましたが、最終的には私のブランチのフォルダーに対する誤ったSVNプロパティが原因でした。

解決策は簡単でした。欠落していると報告されていた特定のリビジョン番号を使用して、トランクからブランチにマージしました。

enter image description here

そして、マージのみを記録するように指定します。

enter image description here

このアクションにより、ブランチがトランクと正しく一致し、その後のブランチのトランクへの再統合が正常に機能し、範囲エラーメッセージが表示されませんでした。

この手法により、ファイルやフォルダーに対してsvn:mergeinfoプロパティを手動で編集する必要がなくなりました。

10
Greg Trevellick

-rオプションをsvn mergeコマンドに使用し始めたとき、これらの問題が発生するのを止め、それなしでマージするまで--reintegrateを実行しようとしませんでした。私はsvn 1.6.1を使用しています。

これが私がすることです:
1。ブランチからトランクまたはトランクからブランチにマージするとき、私は次のように-rオプションを使用します。

 cd branchWorkArea/topDir
 svn merge -r<branchPoint>:HEAD [otheroptions] svn://svn/project/trunk/topDir
  1. 競合を解決してコードをテストしたら、マージをブランチにコミットし、同じ基本オプション(特に-rBranchPoint:HEAD)を使用してブランチをトランクにマージします。

  2. トランクがテストされコミットされたら、-reintegrateオプションを使用してブランチを閉じます。必ず-rbranchPoint:HEADオプションも使用してください。

他のオプションについては、私は常に使用します

--depth infinity(デフォルトは1.6.2では無限大ですが、以前は無限大です)
-x -b -x -w --ignore-eol-style

たぶん、私は幸運だったかもしれませんが、物事は確かにうまくいくようです。

ブランチのブランチポイントを見つけるには、svn log --stop-on-copyを実行してから、最後のリビジョンまでを確認します。ブランチを作成したのはsvnコピーです。

Linuxでこれを行うには、次のようにします。

svn log --stop-on-copy svn:// svn/project/trunk/topDir |
grep '^ r' |尾-1 | sed -e 's/^ r // 1'-e' s /。* // g '

これにより、分岐点のリビジョン番号が出力されます。

幸運を

4
Lowell Boggs

これは答えではなく、明確な質問です。

私のエラーメッセージは:

Reintegrate can only be used if revisions 2669 through 3403 were previously merged from
https://../schemas
to the integrate source, but this is not the case:
trunk/schemas:
Missing ranges:
../schemas:2673,2682,2720,2736,2878,2960,3003,3057

@Greg Trevellickが提供するソリューションを使用してリビジョンをマージしましたが、まだエラーメッセージが表示されます。

スキーマフォルダーで@pakoの回答に従ってsvn:mergeinfoプロパティを開くと、コンテンツは次のようになります。

/branches/repos_develop_os/trunk_branch-os/schemas:3329
/trunk/schemas:2669-2673,2682,2720,2736,2878,2960,3003,3057

このコンテンツをどのように変更すればよいかわかりません。不足している範囲がすべてあるようです。

0
OS-50101