2016-03-03 134 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"时自动重新合并。