繁体   English   中英

Svnkit:远程获取两次提交修订之间的差异

[英]Svnkit: getting the diffs between two commits revision remotely

我想使用 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 并将其传递给操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM