質問: runtimeProcess.waitFor(); } } ``` ``` logs.xls (除外対象には*マーク) リビジョン:5500 *ブランチ:test ユーザ:testuser 日付:Sun Mar 5 00:00:00 2017 +0900 要約:テスト (できれば)*{ リビジョン:5499 ブランチ:test 親リビジョン: 5494 親リビジョン: 5497 ユーザ:testuser 日付:Sun Mar 5 00:00:00 2017 +0900 要約:次とマージ } ``` ### 試したこと xlsではなくtxtにして対応することも可能だったが同様に除外はできなかった ### 補足情報(言語/FW/ツール等のバージョンなど) 開発環境:Eclipce
回答: まず、ブランチを出力させたくないなら --template で出力テンプレートを指定してやればよいかと思います。 問題はできれば、の方ですが、これは出力後に手作業で加工するか、別途加工用にプログラムを組むとかですかね。 * { を含む行が来たら、その行から、} が出てくるまでの行を出力しない。 * それ以外の行は普通に出力する というような処理を行うプログラムを書く(awk スクリプトでできそうな気もしますが)。 意図を汲んでサンプル ``` public class log { public static void createlog() throws IOException , InterruptedException{ //ログ抽出 Process runtimeProcess = Runtime.getRuntime().exec("hg log -b test >> temp.txt"); int processCompleted = runtimeProcess.waitFor(); BufferedReader br = new BufferedReader(new FileReader("temp.txt")); BuffererWriter bw = new BufferedWriter(new FileWriter("result.txt")); String line; bool inBlock = false; bool writeFlg = true; List block = new ArrayList(); while( (line = br.readLine()) != null) { if (line.equals("{")) { // ブロック始まり inBlock = true; continue; } else if (line.equals("}") && inBlock) { // ブロック終わり if (writeFlg) { bw.write("{"}); bw.newLine(); for(String l: block) { bw.write(l); bw.newLine(); } bw.write("}"); bw.newLine(); } writeFlg = true; inBlock = false; block.clear(); continue; } if (line.startsWith("ブランチ") { continue; } if (line.startsWith("要約:次とマージ") && inBlock) { writeFlg = false; continue; } if (inBlock) { block.add(line); } else { bw.write(line); bw.newLine(); } } bw.close(); br.close(); } } ```