2017-06-23 53 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不僅會標記衝突,還會修改這些文件,以便你可以看到原始版本,更改和更改。

您可以使用合併工具(超越比較,融合,TortoiseSVN合併)來解決衝突,方法是查看三個版本並從每個版本中選擇要保留的行。

有了這些信息,你應該能夠弄清楚爲什麼會發生衝突。

你懷疑其他文件沒有被修改,所以這項調查會給你確定性。如果事實證明沒有人提交這些文件,那麼我懷疑問題在於mergeinfo。如果您從其他來源合併,並且其他分支合併了其他來源,則您將在mergeinfo屬性中發生衝突。這是與文件相關的元數據,它告訴SVN已經合併了哪些轉速。

如果您至少沒有解決衝突一次並提交更新的屬性,則下次合併時,您會看到同樣的問題再次。

相關問題