簡體   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