2017-03-31 22 views
1

SvnKitを使用して2つのリビジョン間でDiffsを取得したいとします。私はドキュメントを見て、SVNRepositoryクラスでこのメソッドを見つけましたが、ローカルコピーとリモートコピーの間の差分のみをチェックします。Svnkit:2つのコミットの差分をリモートから取得する

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内部での使用経験があります。

代わりに、 "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を実装して操作に渡すことができます。

関連する問題