web-dev-qa-db-ja.com

SVNマージは、一部のリビジョンでは何もマージしていません

SubversionとTortoiseSVNを使用しています。開発にはトランクを使用し、安定したリリースを表すためにブランチを使用します。ブランチで行われた変更(バグ修正)は、その後、トランクにマージされます。私たちはSubversionの専門家ではありませんが、一般的にこれは私たちにとってうまく機能します。

最近、ブランチからトランクへの一連の変更をマージしていましたが、マージが何も行わない1つのリビジョンに到達しました。

Command    Merging revisions 7233-7234 of .../branches/RB-7.2.0 into C:\Core, respecting ancestry
           C:\Core  
Finished!   

ブランチリビジョンには明らかに変更が関連付けられており、関連するファイルは新しいものではなく、変更はトランクの作業コピーに表示されないため、なぜ機能しないのかわかりません。このように動作する(いくつかの異なるファイルを含む)いくつかの連続したブランチリビジョンがあり、その後のリビジョンは正常に動作するようです。

マージをレコードのみとしてマークすることで、リビジョンのマージをブロックできることを知っています(そうではないのに、リビジョンはマージ済みとしてマークされます)。したがって、私が考えることができるのは、これらのリビジョンが何らかの理由でブロックされていることだけです。 。トランクでは、マージする必要のあるファイルは、mergeinfoプロパティに何も含まれていないように見え、その親フォルダーも含まれていません。しかし、その情報がどこに表示されるかはわかりません。また、マージダイアログの「ログの表示」ダイアログには、「マージされたリビジョンを含める」が選択されているかどうかに関係なく、すでに正常にマージされたものを含むすべてのリビジョンが表示されているようです。

だから私の質問は次のとおりです:

  • この改訂の理論がブロックされていることを確認する方法はありますか?
  • リビジョンがブロックされている場合、それらのブロックを解除する方法はありますか?
  • それらがブロックされていない場合、他に何を見るべきですか?

更新:問題がブロックされているリビジョンに関連していないことを確認した後、亀ではなくコマンドラインからマージを再試行しました。それはマージを行いました(イェーイ!)が、今私がそれを見ていると、mergeinfoがすでにmergeinfoを持っている6つの無関係なファイルについてのみ、変更されたファイルのいずれに対しても更新されていないことに気付きます。これを心配するかどうかはわかりません。なぜ亀が動かないのかはまだわかりませんが、少なくとも仕事はできます。

18
Mishelle

Tortoiseがマージを行うとき、リビジョンボックスを空のままにした場合、マージするリビジョンを決定するために、mergeinfoプロパティのみが使用されます。したがって、リビジョンの「ブロックを解除」し、明示的にマージするだけです。 Tortoiseは、すでにマージされたリビジョンをログにリストしません

Tortoiseはマージをmergeinfoに再度記録する可能性があるため、後でディレクトリのsvnプロパティを調べて、それが行われるかどうかを確認します(追加のエントリを編集します。サーバーがこれを行うと思いますが、手動で行う方が簡単な場合もあります)。 。

別の方法は、mergeinfoプロパティを調べて、このリビジョンがすでにリストされているかどうかを確認することです。リストされている場合は、削除してコミットします。次に、マージを繰り返すと、期待どおりに機能するはずです。

宛先には通常mergeinfoがありますが、あなたの場合、ブランチにもマージをブロックしている可能性のあるものがあると思います。その場合はお知らせください。実際に何が起こっているのか興味があります。

12
gbjbaanb

マージが記録された可能性があります。再確認するには、C:\ Coreから(トランクチェックアウトのように見えます):

svn propget -R svn:mergeinfo > mergeinfo.txt 

結果のファイルを検索して、問題のリビジョン番号がリストされているかどうかを確認します。覚えておいてください-これはマージのターゲットであるため、チェックしたいトランクです。

範囲としてリストされている可能性があるため、ストレート検索が機能しない可能性があります(たとえば、ファイルには7234ではなく7230-7240がリストされている可能性があります)そうでない場合は、別のことが起こっています-そうである場合は、マージがファイルに記録されているか、チェックされていないフォルダ。

手動で編集せずにmergeinfoの記録を元に戻す方法はわかりませんが(非推奨)、-ignore-ancestryを渡すことで、リビジョンを強制的に再マージすることができます。それがマージに何かをさせる場合、svnはマージがすでに行われていると考え、上記の証拠を見るべきでした。

マージがまだ記録されておらず、上記の手順で解決されなかった場合は、 svnメーリングリスト でアイデアを確認してください。

6
Joshua McKinnon