public static void main()

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;
            }
        }
    }