2016-03-03 143 views
0

我試圖與SVNKit合併,但它會導致樹衝突。爲了找到我使用svn命令行工具做了一些實驗的原因。此命令將導致相同的衝突爲SVNKit:如何合併SVNKit類似於「svn合併」

svn merge –r 0:HEAD "https://svnserver.com/svn/test/trunk" 

svn merge "https://svnserver.com/svn/test/trunk" 

是工作的罰款。

那麼我該怎麼做SVNKit呢? doMerge需要一個SVNRevisionRange。

SVNRevisionRange r = new SVNRevisionRange(SVNRevision.create(0), SVNRevision.HEAD); 
dc.doMerge(mergeUrl, mergeRev, Arrays.asList(r), mr, INFINITY, true, false, false, false); 
+1

可能完全偏離主題的提示,但:如果您使用Linux作爲開發平臺;考慮使用「git svn」。基本上,允許你運行你的「本地」倉庫...作爲混帳;使用您現有的SVN服務器作爲「遠程」。突然之間,SVN的大部分痛苦消失了;並且你幾乎可以免費獲得git的所有複雜功能(例如它的合併功能;或櫻桃採摘)(幾乎就像:你需要一些時間來學習git,但我認爲這是非常值得的價格釋放代碼是自從我開始使用git/svn以來,情況就好多了)。 – GhostCat

+0

感謝您的回覆,但由於所需的工具鏈,我使用Windows作爲開發平臺。我喜歡切換到git,但我需要限制對某些飼料的訪問。 – Noetzold

+0

@Jägermeister這與這個問題有什麼關係? – bahrep

回答

1

首先,您不需要像在第一個示例中那樣對存儲庫中的所有修訂版本運行合併。出現樹衝突是因爲在這些0:HEAD修訂版中存在文件夾重命名,並且它們不能按原樣應用。閱讀SVNBook | Dealing with Structural Conflicts

關於你的SVNKit代碼片段,似乎你想運行reintegrate merge(你呢?)。在這種情況下,你做錯了。閱讀SVNKit SvnMerge class documentation on reintegrate merges

我猜你的Subversion svn.exe客戶端版本是1.8或更新。從版本1.8開始,客戶端does reintegrate merges automatically在我看來,它在運行svn merge "https://svnserver.com/svn/test/trunk"時自動重新合併。