in xmlschema-core/maint/DoMerges.java [84:215]
public static void main (String args[]) throws Exception {
if (args.length > 0 && "-auto".equals(args[0])) {
auto = true;
}
System.out.println("Updating directory");
Process p = Runtime.getRuntime().exec(new String[] {"svn", "up", "-r", "head", "."});
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = reader.readLine();
while (line != null) {
System.out.println(line);
line = reader.readLine();
}
p.waitFor();
p = Runtime.getRuntime().exec(getCommandLine(new String[] {"svnmerge.py", "avail"}));
reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
line = reader.readLine();
List<String> verList = new ArrayList<String>();
while (line != null) {
String vers[] = line.split(",");
for (String s : vers) {
if (s.indexOf("-") != -1) {
String s1 = s.substring(0, s.indexOf("-"));
String s2 = s.substring(s.indexOf("-") + 1);
int i1 = Integer.parseInt(s1);
int i2 = Integer.parseInt(s2);
for (int x = i1; x <= i2; x++) {
verList.add(Integer.toString(x));
}
} else {
verList.add(s);
}
}
line = reader.readLine();
}
p.waitFor();
System.out.println("Merging versions (" + verList.size() + "): " + verList);
String root = null;
p = Runtime.getRuntime().exec(new String[] {"svn", "info"});
reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
line = reader.readLine();
while (line != null) {
if (line.startsWith("Repository Root: ")) {
root = line.substring("Repository Root: ".length()).trim();
}
line = reader.readLine();
}
System.out.println("Root: " + root);
p.waitFor();
int count = 1;
for (String ver : verList) {
System.out.println("Merging: " + ver + " (" + (count++) + "/" + verList.size() + ")");
p = Runtime.getRuntime().exec(new String[] {"svn", "log", "-r" , ver, root});
reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
line = reader.readLine();
while (line != null) {
System.out.println(line);
line = reader.readLine();
}
p.waitFor();
while (System.in.available() > 0) {
System.in.read();
}
char c = auto ? 'M' : 0;
while (c != 'M'
&& c != 'B'
&& c != 'I') {
System.out.print("[M]erge, [B]lock, or [I]gnore? ");
int i = System.in.read();
c = Character.toUpperCase((char)i);
}
switch (c) {
case 'M':
p = Runtime.getRuntime().exec(getCommandLine(new String[] {"svnmerge.py", "merge", "-r", ver}));
reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
line = reader.readLine();
while (line != null) {
System.out.println(line);
line = reader.readLine();
}
if (p.waitFor() != 0) {
System.out.println("ERROR!");
reader = new BufferedReader(new InputStreamReader(p.getErrorStream()));
line = reader.readLine();
while (line != null) {
System.out.println(line);
line = reader.readLine();
}
System.exit(1);
}
doCommit();
break;
case 'B':
p = Runtime.getRuntime().exec(getCommandLine(new String[] {"svnmerge.py", "block", "-r", ver}));
reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
line = reader.readLine();
while (line != null) {
System.out.println(line);
line = reader.readLine();
}
if (p.waitFor() != 0) {
System.out.println("ERROR!");
reader = new BufferedReader(new InputStreamReader(p.getErrorStream()));
line = reader.readLine();
while (line != null) {
System.out.println(line);
line = reader.readLine();
}
System.exit(1);
}
doCommit();
break;
case 'I':
System.out.println("Ignoring");
break;
}
}
}