Я думаю, что пока нет ответа, который действительно решает проблему в том смысле, что если были внесены изменения в часть svn: externals, они, конечно, должны отображаться. Это, вероятно, не имеет смысла для действительно внешних хранилищ. Но я использую svn: externals, чтобы добавить общую папку сборки из того же репозитория в проекты (потому что никакой общей иерархии модулей не существует). И я не хочу использовать опции --ignore-externals -q
, так как теряю информацию о не добавленных файлах и изменениях в общем сценарии сборки, который я сделал в этом проекте (который я мог бы захотеть зафиксировать). Мое решение состояло в том, чтобы исправить патч Java-реализации Subversion 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());
Это решает проблему, потому что изменения во внешних элементах также помечены буквой «М» для измененных ...