我正在尝试与 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:HEAD 修订版中存在文件夹重命名,并且无法按原样干净地应用它们。阅读 SVNBook | Dealing with Structural Conflicts .
关于您的 SVNKit 代码片段,您似乎想运行重新集成合并(是吗?)。在这种情况下,你就做错了。阅读 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"时,它会自动重新集成合并。
关于java - 如何与SVNKit合并类似 "svn merge",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35768379/