2017-03-31 251 views
1

我想使用SvnKit获得两个版本之间的差异。我查看了文档,并在SVNRepository类中找到了此方法,但它仅检查本地副本和远程副本之间的差异。Svnkit:远程获取两个提交之间的差异版本

diff(SVNURL url, long targetRevision, long revision, java.lang.String target, boolean ignoreAncestry, SVNDepth depth, boolean getContents, ISVNReporterBaton reporter, ISVNEditor editor) 

有没有办法在不下载存储库的情况下为某个版本库获取某个版本的差异?

回答

1

SVNKit中有几个API,基于SVNRepository的API是最底层的,你需要在使用Subversion内部体系方面有相当的经验。

相反,最好使用基于SvnOperationFactory的API,它与“svn diff”命令非常类似。

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