我试图与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);
答案 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"
时,它会自动重新整合合并。