svnkitを使用してローカルで変更された/バージョン管理されていないファイルを一覧表示する方法のみが見つかりましたか? svn status
リポジトリのルート ディレクトリで正確な出力を取得するには、複雑なロジックを実装する必要があります。
svnkitjsvn
は で実装されているコマンド ライン ツールも提供するsvnkit-cli
ので、使用したいコードを で見つけましたorg.tmatesoft.svn.cli.svn.SVNStatusCommand.run()
。
しかし、私はそれを機能させることができず、jsvnがそれを行っている正確な方法を見つけられません。私はjsvnをデバッグしますが、gradleビルドをセットアップできません。おそらく、ここに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 がまだ初期化されていない、つまり null であるため失敗します。目的は、文字列で出力を取得することです。ファイルシステム内の PrintStream と余分なファイルは好きではありませんが、別の方法はありません。