開発ブランチを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は正しいようです
まず、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を使用してください
私たちはこの問題に数週間苦労し、ようやく解決しました。
私たちの場合、私たちは毎日、すべてのトランクリビジョンとマージされるブランチに取り組みました。再統合(トランクにマージ)しようとすると、このエラーが発生しました。不足している範囲をブランチにマージしようとすると、マージするものがないというメッセージが表示されました。これは、いくつかの無関係なブランチで、異なるファイルとフォルダで発生しました。
不足している範囲をブランチのファイルまたはフォルダーのsvn:mergeinfoプロパティに追加することで解決しました。
受け取ったメッセージの「Missing range:path:revision_range」行ごとに:
すべての変更をコミットして、再統合します
-rオプションをsvn mergeコマンドに使用し始めたとき、これらの問題が発生するのを止め、それなしでマージするまで--reintegrateを実行しようとしませんでした。私はsvn 1.6.1を使用しています。
これが私がすることです:
1。ブランチからトランクまたはトランクからブランチにマージするとき、私は次のように-rオプションを使用します。
cd branchWorkArea/topDir
svn merge -r<branchPoint>:HEAD [otheroptions] svn://svn/project/trunk/topDir
競合を解決してコードをテストしたら、マージをブランチにコミットし、同じ基本オプション(特に-rBranchPoint:HEAD)を使用してブランチをトランクにマージします。
トランクがテストされコミットされたら、-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 '
これにより、分岐点のリビジョン番号が出力されます。
幸運を
これは答えではなく、明確な質問です。
私のエラーメッセージは:
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
このコンテンツをどのように変更すればよいかわかりません。不足している範囲がすべてあるようです。