svn:externals の一部に変更が加えられた場合、それらはもちろん表示されるべきであるという意味で、まだ本当に問題を解決する答えはないと思います。これはおそらく、実際の外部リポジトリには意味がありません。しかし、svn:externals を使用して、同じリポジトリからプロジェクトに一般的なビルド フォルダーを追加します (モジュールの一般的な階層が存在しないため)。--ignore-externals -q
また、追加されていないファイルに関する情報と、このプロジェクトで行った一般的なビルド スクリプトの変更 (コミットしたい場合があります) を失うため、オプションを使用したくありません。私の解決策は、サブバージョン Java コマンドライン実装svnkitにパッチを当てることでした。
AbstractSVNCommand.registerCommand(new SVNStatusCommand());
final ByteArrayOutputStream bos = new ByteArrayOutputStream();
final PrintStream stream = new PrintStream(bos);
final SVNCommandLine commandLine = new SVNCommandLine();
commandLine.init(new String[] { "status", "PATH..." });
final SVNCommandEnvironment env = new SVNCommandEnvironment("mySvn", stream, stream, System.in);
env.init(commandLine);
env.initClientManager();
final SVNStatusCommand svnStatusCall = new SVNStatusCommand();
svnStatusCall.init(env);
svnStatusCall.run();
stream.flush();
String result = new String(bos.toByteArray());
StringBuffer buffer = new StringBuffer();
Scanner scanner = new Scanner(result);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
if (line.startsWith("X") || line.startsWith("Performing status on external item at")) {
// ignore this output
} else if (line.trim().isEmpty() == false) {
buffer.append(line + "\n");
}
}
System.out.println(buffer.toString());
これで問題が解決します。これは、外部の変更も変更されたことを示す 'M' でマークされているためです...