2017-03-31 255 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並將其傳遞給操作。