如何与SVNKit合并类似于“svn merge”

时间:2016-03-03 09:41:14

标签: java svn merge svnkit

我试图与SVNKit合并,但它会导致树冲突。找到我用svn命令行工具做一些实验的原因。此命令将导致与SVNKit相同的冲突:

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 个答案:

答案 0 :(得分: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"时,它会自动重新整合合并。