我只发现如何使用 svnkit 列出本地修改/未版本控制的文件?这需要实现复杂的逻辑才能在svn status
存储库的根目录上获得准确的输出。
由于 svnkit 还提供了一个命令行工具jsvn
,该工具在svnkit-cli
我找到了我想在org.tmatesoft.svn.cli.svn.SVNStatusCommand.run()
.
但我无法让它工作,也找不到 jsvn 的确切方式。我会调试jsvn,但无法设置gradle build,很可能是因为我们的windows ntlm http代理在这里......
到目前为止我已经尝试过:
StringBuffer result = new StringBuffer();
SVNStatusCommand svnStatusCall = new SVNStatusCommand();
File statusResult = new File(System.getProperty("java.io.tmpdir") + File.separator + System.currentTimeMillis() + "svnStatusCalls");
PrintStream stream = new PrintStream(statusResult);
SVNCommandEnvironment env = new SVNCommandEnvironment("mySvn", stream, stream, null);
env.getTargets().add("/home/user/svnroot");
svnStatusCall.init(env);
svnStatusCall.run();
stream.flush();
Scanner scanner = new Scanner(statusResult);
while (scanner.hasNextLine()) {
result.append(scanner.nextLine());
}
scanner.close();
这失败是因为 SVNCommandEnvironment 的 myTargets 尚未初始化,即为空。目的是获取字符串中的输出。我不喜欢文件系统中的 PrintStream 和额外文件,但没有看到不同的方式。