1. ホーム
  2. svn

[解決済み] 再統合は、リビジョン X から Y までが <URL> から以前に統合されている場合にのみ使用でき、ソースを再統合することができます。

2022-07-06 19:31:33

質問

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

今日、私はブランチを再統合しようと思いました。Tortoise から "Reintegrate a branch" を選び、次のようなエラーメッセージを受け取りました。

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

そして、このような記述のあるファイルが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

私には、このエラーメッセージは、ブランチが元々トランクから来たものではないと言っているように見えますが、それは真実ではありません。

何か思い当たることはありますか?

どのように解決するのですか?

もしあなたがブランチで作業していて、他の人の作業でブランチを最新の状態に保っているなら、トランクの作業コピーを作成してブランチを再統合しようとしたときに、次のようなメッセージが表示されたら困惑するかもしれません。

$ 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.

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

これがお役に立てれば幸いです。