再統合は、リビジョンXからYが以前に<URL>からマージされてソースを再統合した場合にのみ使用できますが、そうではありません。


127

Tortoise 1.6でSVNブランチを使用しています。私は定期的にトランクをブランチにマージして、最新の状態に保っています。

今日、私はブランチを再統合すると思いました。Tortoiseから「ブランチの再統合」を選択したところ、次のエラーメッセージが表示されました。

再統合は、リビジョン4709から5019が以前にマージされた場合にのみ使用できます http://subversion/svn/saxdev/trunk再統合ソースにが、これはません

次に、次のような説明を含む約50のファイルをリストしました。

Error: branches/qst/kobalt/sax/businessobjects/util/HistoryParent.java

Error: Missing ranges: /trunk/kobalt/sax/businessobjects/util/HistoryParent.java:4709-5018

リビジョン5019は最新のリビジョンです。リビジョン4737は、ブランチを作成したときのリビジョンです。

リビジョン4737のログからこれを持っています

アクション:追加されたパス:/ branches / qstパスからコピー:/ trunk

私にとって、そのエラーメッセージは、ブランチが元々トランクからではなかったことを示していますが、これは正しくありません。

何か案は?


1
はい。私は本当にSubversionをもう使用していませんが、あなたの言葉を受け入れます!
colinjwebb 2015

1
ありがとう、相棒。そのページの方がいいと思います。
グレー

回答:


138

ブランチで作業していて、他の作業でそれを最新の状態に維持している場合、トランクの作業用コピーを作成し、次のようなメッセージが表示された場合にブランチを再統合しようとすると、困惑することがあります。

$ svn merge --reintegrate https://server.blah/source/orb/branches/bronze_services
svn: Reintegrate can only be used if revisions 650 through 694 were previously merged from
     https://server.blah/source/orb/trunk to the reintegrate source, but this is not the
     case:
  branches/bronze_services/occl
    Missing ranges: /trunk/occl:650-693

私はGoogleで多くの回避策を見てきましたが、「ハッキング」として緊張しました。これに対処するために、メッセージでsubversionが示唆していることだけを行うことにしました。私は自分のブランチに戻り、指定されたリビジョンを明示的にマージしました:

$ svn merge -r 650:693 https://server.blah/source/orb/trunk
$ svn commit -m 'merged revisions 650:693 from trunk'
    Sending        occl
Committed revision 695.

これを行うと、トランクの作業コピーに戻り、問題なくブランチを再統合することができました。

これが役に立てば幸い


16
いいね!「メッセージでsubversionが示唆していることを実行してください」。:)
アダム

7
私は同意する、より一般的な答えは魅力的ですが、おそらくそれを正しく修正する方が良いでしょう。私はsvn mergeトランクから特定の問題のあるファイルとそのファイルに行かなければなりませんでした。
Steve Kehlet、2013年

1
これは私にとってはうまくいきました。主なトリックは、亀が問題の修正を教えてくれなかったことでした。コマンドラインのsvnクライアントをアップグレードした後、あなたが持っているようなメッセージを表示して、問題のリビジョンをマージしてトランクに戻ることができました。
user12861 2013

7
リストにある「見つからない」マージはすでにブランチ(ソースの再統合)で行われているため、これは私にはうまくいきませんでした。
サム

6
この答えは合理的に聞こえますが、私にはうまくいきませんでした。同じエラーメッセージが何度も表示されます。助けとなったのは、受け入れられた答えが示唆しているように、リストされたファイルからsvn:mergeinfoプロパティを削除することでした。
ジェニー・オライリー、

85

[[私の解決策は以前はうまく機能していましたが、最新のSVNクライアントでは不適切な結果につながる可能性があります。私たちの場合、マージエラーは、SVNの履歴を混乱させる自動化の副産物であり、実際のアクティビティではないようです。私はこれを後世のためにここに残しますが、代わりに受け入れられた答えを検討してください。]]

私にとっての解決策はsvn:mergeinfo、何らかの形で階層内の個々のファイルに関連付けられているプロパティを削除することでした。

svn merge --reintegrate svn+ssh://svn/usr/local/svn/repos/all/trunk 
svn: Reintegrate can only be used if revisions 18765 through 18921 were
    previously merged from svn+ssh://svn/usr/local/svn/repos/all/trunk to the
    reintegrate source, but this is not the case:
trunk/proj/src/main/java/com/foo/furniture.java
Missing ranges: /trunk/proj/src/main/java/com/foo/furniture.java:18765-18920

あなたができるmergeinfo情報を持つファイルを見つけるために:

cd ~/svn/branches/2.7
svn propget -R svn:mergeinfo .

次に、mergeinfoプロパティを削除できます。

svn propdel svn:mergeinfo proj/src/main/java/com/foo/furniture.java ...
svn commit -m 'removed mergeinfo' proj/src/main/java/com/foo/furniture.java ...

これを完了した後、私のマージは問題なく実行されました。


2
これは本当に私の問題の解決に役立ちましたが、私の原因は、ルートフォルダーでこれを行うのではなく、子フォルダーからリビジョンをマージすることでした。私の問題は-マージを実行しましたが、ルートフォルダーがマージの発生を認識していなかったため、不足しているリビジョン番号でmergeinfoプロップを手動で更新する必要がありました。 注:変更できるのは他のファイルの変更がないためであり、他のファイルをマージする必要がある場合は予期しない動作が発生します。これが該当する場合は、リビジョンを再マージする必要があります。
ExecutionOrder

5
TortoiseSVNでは、ファイルを右クリックして[TortoiseSVN]-> [プロパティ]を選択し、svn:mergeinfoプロパティを削除できます。
StarCub 2013年

3
@StephenKennedyすでに再統合されているブランチを再利用する問題に遭遇している可能性があります。その場合は、svnbook.red-bean.com / en / 1.7 /の最後のセクションをチェックしてください。「-reintegrateマージがブランチからトランクに実行されると、ブランチは今後の作業に使用できなくなります。」
AlexMA 2013年

6
+1。すべてのmergeinfosを削除する必要はありません。範囲が不足しているものだけです。TortoiseSVNエラー出力をフィルタリングして問題のmergeinfosのみを削除する方法については、私の回答を参照しください。
Iain Samuel McLean Elder

4
-1。あなたが何をしているかについて本当に確信がない限り、mergeinfoプロパティを削除すべきではありません。多くの人がこれを読んだり、これらのプロパティを削除したり、他の問題を誤って引き起こしたりする可能性があります。ポールウィップの方が良い答えです。
Bizmarck 2014

15

ブランチをトランクに再統合しようとして、TortoiseSVNから次のようなエラーが表示された場合:

マージ再統合テストのみが失敗しました!:「一部のリビジョンが以前にトランクからマージされた場合にのみ再統合を使用できますが、これは当てはまりません」

エラーテキストをクリックし、CTRL+ ACTRL+ Cを押してすべてのテキストをコピーします。

このPowerShellスクリプトのhere-stringにテキストを貼り付けます。

@"
Command: Reintegrate merge http://svn.cloudcorp.com/branches/myproject into C:\Users\iain\Documents\Repositories\CloudCorp\trunk  
Error: Reintegrate can only be used if revisions 18089 through 18612 were previously  
Error:  merged from http://svn.corp.skyscanner.local/svn/SkyScannerDatabase/trunk to  
Error:  the reintegrate source, but this is not the case:  
Error:    
Error:  branches/myproject/userdata/usermanagementservice  
Error:   
Error:     Missing ranges:  
Error:  /trunk/userdata/usermanagementservice:18365,18404  
Error:    
Error:  branches/myproject/userdata/auto_create_db.sql  
Error:   
Error:     Missing ranges:  
Error:  /trunk/userdata/auto_create_db.sql:18406  
Error:   
Error:    
Error:  branches/myproject/userdata/create_audit_tables_triggers_uds.sql  
Error:   
Error:     Missing ranges:  
Error:  /trunk/userdata/create_audit_tables_triggers_uds.sql:18406  
"@ -split "`n" |
? { $_ -match ('Error: +branches') } |
% { $_.Substring($_.IndexOf('userdata')) } |
% { "svn propdel svn:mergeinfo $_" }

スクリプトは、mergeinfoの問題があるファイルの相対パスを抽出し、それぞれを修正するコマンドのリストを出力します。

'userdata'リポジトリ構造に合わせて値を変更する必要がある場合があります。

スクリプトを実行して、問題のmergeinfosを削除するために必要なコマンドを出力します。

この例では、スクリプトは次の出力を生成します。

svn propdel svn:mergeinfo userdata/usermanagementservice  
svn propdel svn:mergeinfo userdata/auto_create_db.sql  
svn propdel svn:mergeinfo userdata/create_audit_tables_triggers_uds.sql  

コマンドプロンプトで、ブランチベース(myproject)に移動し、コマンドを実行して問題のmergeinfosを削除できます。

次のような出力が表示されます。

property 'svn:mergeinfo' deleted from 'userdata\usermanagementservice'.
property 'svn:mergeinfo' deleted from 'userdata\auto_create_db.sql'.
property 'svn:mergeinfo' deleted from 'userdata\create_audit_tables_triggers_uds.sql'.

以下のように灰色の答え、今はブランチへの変更をコミットして、もう一度再統合しようとする必要があります。今回はうまくいくはずです!


1
トランクにコミットするつもりで誤ってブランチにコミットしたため、再統合するずっと前に、ブランチからトランクにいくつかの変更をマージしました(再統合ではありません)。それがこれらの再統合エラーの背後にある理由でしょうか?
Iain Samuel McLean Elder

私の場合、それがまさにこの問題を引き起こしているようです。スクリプトを作成していただきありがとうございます。
サム

@Sam Gladあなたはそれが役に立ちました。リテラルスペースをaに置き換える必要があり\s+ますか?
Iain Samuel McLean Elder 14

ソート; それが+私のために働くのに必要なのはそれだけでした。私の場合、一部の行には2つのスペースがあり、他の行には3つのスペースがあったため、可変数のスペースのサポートが必要でした。スペースをに変更した理由がわかりません\s。それはおそらく必要なかったので、その部分については申し訳ありません!
サム

@Sam心配ありませんが、TortoiseSVNがタブなどと混同し始めるまでは、今のところそれをリテラルスペースに変更+します。
Iain Samuel McLean Elder 14

11

実際には、「2つの異なるブランチをマージする」オプションを使用して、トランクとブランチを作業コピーにマージして修正しました。次に、それをトランクにコミットしました。

素晴らしい


4
この答えは、あなたが何をしたかを実際に説明するものではありません。例はなく、マニュアルの必須セクションへのリンクもありません。
zigg

後から考えると、そうではありません。しかし、これは質問と同じ日に私自身の回答だったので、数か月間は最良の回答でした。Tortoise SVN 1.6をまだ使用しているのであれば、理にかなっていると思います。代わりに、私はグレイの答えを受け入れられた答えとして受け入れました。
colinjwebb 14

例:svn merge ^ / tags / wx ^ / tags / yz。1.8を使用してトランクにマージすると、以前にトランクからマージソースにマージされた特定のリビジョンがあった場合に、再統合エラーがポップアップ表示されました。1.8は、再統合マージが試行されたがそうではなかったと判断するように見えました。1.6との模擬マージは問題なく機能しますが、2つのURLマージも適合します。
Nick

1
1.8で失敗した正確なシナリオは、パッチリリースの一部のリビジョンからタグをコピーし、パッチを適用したタグへのマージによってトランクからバックポートへの変更をチェリー選択し、パッチを適用したタグにさらに変更を加え、そのマージを戻すことでした。トランクに。ベースタグとパッチを適用したバージョンとの間の変更は、トランクにマージする必要があるものであり、2つのURLマージはそのための扱いです。
Nick

何が起こっているのかを理解するために3日間費やす前に、この回答を読んでおくべきでした。私はまだこの問題が発生した理由を理解していませんが、@ Nickからのコメントが理由であると疑っています-そして今はうまくいきます...これ以上は調べません...
Dave Richardson

6

亀SVNで私のために働いた何か:ブランチからすべてのリビジョンをマージする代わりに、特定の範囲を選択し、ブランチからすべてのリビジョンを手動で選択します。


1
そのような基本的な考えをありがとう。すべての答えの中で、これは最も複雑なだけでなく、私のために働いた唯一のものでした。
redman

3

SVNがあなたに言っているようにしてください。

  1. SVNから通知されたReversionのブランチをマージします
  2. ブランチからトランクに再統合

2
私のために働いていませんでした。変更はすでにブランチに存在していました。あなたの指示はいくつかのケースではうまくいくように見えますが、それらは仮定に基づいているようであり、普遍的ではないようです。
2014

1

同様のケースでの私の経験については、こちらの私の回答も参照してください。これが問題の原因であるかどうかはわかりませんが、2つの変更が互いにキャンセルし合うと、Subversion 1.8でmergeinfoに問題が発生するようです。


0

この問題に遭遇しました。ブランチにトランクをマージしていたかどうかを確認するために、ブランチでSVNログを作成しました。

すべての改訂に注意しました。

次に、リビジョンを手動で指定して、ブランチをトランクにマージしました。トランクをマージしたリビジョンを除外するためにすべての範囲を指定しました。なんとかブランチをマージしました。

mergeinfoを元に戻す必要がありましたが、コードをマージしました。

すぐにブランチを削除しました。


0

ブランチの部分的なチェックアウトを使用した後、このエラーが発生しました。トランクを使用してブランチを最新の状態に保ちましたが、チェックアウトされていないブランチの一部のトランクリビジョンはもちろん更新されていません。修正は、ブランチの完全なチェックアウトを行ってから、すべてのトランクの変更をマージすることでした。これらをブランチにコミットした後、ブランチをトランクにマージできました。


0

この問題を手に入れました

  • TortoiseSVN 1.9.7、ビルド27907-64ビット、2017/08/08 19:34:38
  • Subversion 1.9.7、-release
  • 1.5.2
  • apr-util 1.5.4
  • serf 1.3.9
  • OpenSSL 1.0.2l 2017年5月25日
  • zlib 1.2.8
  • SQLite 3.14.1

マージするブランチ(このメッセージが表示される)を右クリックし、[リビジョンに更新]オプションを選択してから、開いたダイアログ(下のスクリーンショット)でそれらのリビジョンを選択し、[OK]をクリックします。以前のすべてのリビジョンがマージされたら、このメッセージは表示されません

ここに画像の説明を入力してください

Tortoise SVNを使用している人を助けるためにこれをここに追加します


-1

これは古い投稿であることはわかっていますが、エラーメッセージに記載されているファイルにSVNプロパティの問題があることがわかるまで、この問題の解決にも苦労していました。

問題のあるファイルTortoiseSVN>プロパティを右クリックしましたが、ファイルに2つのsvn:mergeinfoがあり、1つはデータから継承されていませんでした。そこで、そのmergeinfoを削除しました。

TortoiseSVN 1.12.2、Build 28653-64ビットを使用しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.