Java Svnkit:远程获取两个版本之间的差异

Java Svnkit:远程获取两个版本之间的差异,java,svn,svnkit,Java,Svn,Svnkit,我想使用SvnKit获得两个版本之间的差异。我查看了文档,在SVNRepository类中找到了这个方法,但它只检查本地副本和远程副本之间的差异 diff(SVNURL url, long targetRevision, long revision, java.lang.String target, boolean ignoreAncestry, SVNDepth depth, boolean getContents, ISVNReporterBaton reporter, ISVNEditor

我想使用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

它称之为SVNRepository#diff做了很多工作。如果需要对输出进行更多控制,可以实现自己的ISvnDiffGenerator并将其传递给操作

    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();
    }