我想使用SVNDiffClient获取wc本地更改, 相当于'svn diff -rBASE',这正是this示例所做的。
但是,运行示例中的代码会抛出'org.tmatesoft.svn.core.SVNException:svn:对于挂钩的差异,至少有一个版本必须是非本地的',这正是documentation所说的会。
我希望能够在不点击服务器的情况下比较WORKING和BASE,看看是否有任何变化。 这可以使用SVNKit完成吗?
答案 0 :(得分: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();
答案 1 :(得分: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();
}