我想使用SvnKit获得两个修订版之间的差异。我查看了文档,并在SVNRepository
类中找到了此方法,但它仅检查本地副本和远程副本之间的差异。
diff(SVNURL url, long targetRevision, long revision, java.lang.String target, boolean ignoreAncestry, SVNDepth depth, boolean getContents, ISVNReporterBaton reporter, ISVNEditor editor)
无论如何,无需下载版本库就可以获得某个版本库的各种修订版本的差异?
最佳答案
SVNKit中有多个API,基于SVNRepository的API是最低级别的,您需要具有与Subversion内部构件一起使用的良好经验。
相反,最好使用与“ svn diff”命令非常相似的基于SvnOperationFactory的API。
final SvnOperationFactory svnOperationFactory = new SvnOperationFactory();
try {
final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
final SvnDiffGenerator diffGenerator = new SvnDiffGenerator();
diffGenerator.setBasePath(new File(""));
final SvnDiff diff = svnOperationFactory.createDiff();
diff.setSources(SvnTarget.fromURL(url, SVNRevision.create(revision1)), url, SVNRevision.create(revision2)));
diff.setDiffGenerator(diffGenerator);
diff.setOutput(byteArrayOutputStream);
diff.run();
} finally {
svnOperationFactory.dispose();
}
它调用SVNRepository#diff做了很多工作,除此之外。如果需要对输出进行更多控制,则可以实现自己的ISvnDiffGenerator并将其传递给操作。