0

SVNDiffClientを使用して、「svn diff -rBASE」と同等のwcローカル変更を取得したいと思います。これは、まさにこの例で想定されていることです。

ただし、例からコードを実行すると、「org.tmatesoft.svn.core.SVNException:svn:少なくとも1つのリビジョンがペグされた差分に対して非ローカルである必要があります」がスローされます。これは、ドキュメントに記載されているとおりです。

サーバーにアクセスせずにWORKINGとBASEを比較して、変更があったかどうかを確認できるようにしたいと思います。これはSVNKitを使用して達成できますか?

4

2 に答える 2

1

新しいAPIを使用できます。

    final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

    final SvnDiff diff = svnOperationFactory.createDiff();
    diff.setSources(SvnTarget.fromFile(workingCopyDirectory, SVNRevision.BASE), SvnTarget.fromFile(workingCopyDirectory, SVNRevision.WORKING));
    diff.setOutput(byteArrayOutputStream);
    diff.run();
于 2012-06-18T22:16:51.710 に答える
1

古いAPIを使用することもできます。

final SVNClientManager clientManager = SVNClientManager.newInstance();
try {
    final SVNDiffClient diffClient = clientManager.getDiffClient();

    final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    diffClient.doDiff(workingCopyDirectory, SVNRevision.BASE, workingCopyDirectory, SVNRevision.WORKING, SVNDepth.INFINITY, false, outputStream, null);

    System.out.println(outputStream);
} finally {
    clientManager.dispose();
}
于 2012-06-19T14:57:14.070 に答える