2017-06-23 27 views
2

多くのチェンジセットを別のブランチにマージすると、まったく期待しないマージの競合が発生することがよくあります。これらのケースのいくつかの動作は疑わしいものです。SVNのログを読んで、なぜ彼が競合を見ることにしたのかを教えてください。宛先ブランチ上のファイルが他の誰かによって変更されたことには疑問がたくさんあります。SVNにマージ競合が発生する原因を調査することは可能ですか?

+1

[このページ](https://wiki.apache.org/subversion/SymmetricMerge#Symmetric_Merge_Algorithm)は、マージプロセスを理解するのに適しています。しかし、SVNの意思決定プロセスのログはありません。 –

答えて

1

矛盾が発生した場合は、ブランチのsvn log somefileを使用して、変更内容を把握することができます。マージしている他のブランチでsvn log svn://url/repo/branch/somefileを使用して、そのファイルの変更内容を確認できます。

この情報から、SVNが競合にフラグを付けた理由を推測できます。競合は軽微です(ツリーの競合とmergeinfoの競合は通常解決しやすい)。両方ともテキストファイルの同じ行を変更した場合、SVNは競合にフラグを立てるだけでなく、元のバージョン、変更内容、および変更内容を確認できるようにファイルを変更します。

マージツール(Beyond Compare、meld、TortoiseSVNマージ)を使用して、3つのバージョンを確認し、各バージョンから保持する行を選択して、競合を解決できます。

これらの情報をすべて使用すると、競合が発生した理由を把握することができます。

あなたは他のファイルが変更されていない疑いがあります。この調査により確実性が得られます。誰もファイルをコミットしていないことが判明した場合、問題はmergeinfoであると思われます。他のソースからマージし、他のブランチが他のソースをマージした場合、mergeinfoのプロパティに競合が発生します。これは、SVNに既にマージされているレビジョンをSVNに伝えるメタデータです。

少なくとも一度はコンフリクトを解決せずに更新されたプロパティをコミットした場合、次にマージすると、もう一度同じ問題。

関連する問題