teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

サンプルコード追加

2017/03/30 07:48

投稿

tacsheaven
tacsheaven

スコア13707

answer CHANGED
@@ -4,3 +4,56 @@
4
4
  - { を含む行が来たら、その行から、} が出てくるまでの行を出力しない。
5
5
  - それ以外の行は普通に出力する
6
6
  というような処理を行うプログラムを書く(awk スクリプトでできそうな気もしますが)。
7
+
8
+ 意図を汲んでサンプル
9
+ ---
10
+ ```Java
11
+ public class log {
12
+ public static void createlog() throws IOException , InterruptedException{
13
+ //ログ抽出
14
+ Process runtimeProcess = Runtime.getRuntime().exec("hg log -b test >> temp.txt");
15
+ int processCompleted = runtimeProcess.waitFor();
16
+
17
+ BufferedReader br = new BufferedReader(new FileReader("temp.txt"));
18
+ BuffererWriter bw = new BufferedWriter(new FileWriter("result.txt"));
19
+ String line;
20
+ bool inBlock = false;
21
+ bool writeFlg = true;
22
+ List<String> block = new ArrayList<String>();
23
+ while( (line = br.readLine()) != null) {
24
+ if (line.equals("{")) {
25
+ // ブロック始まり
26
+ inBlock = true;
27
+ continue;
28
+ } else if (line.equals("}") && inBlock) {
29
+ // ブロック終わり
30
+ if (writeFlg) {
31
+ bw.write("{"}); bw.newLine();
32
+ for(String l: block) {
33
+ bw.write(l); bw.newLine();
34
+ }
35
+ bw.write("}"); bw.newLine();
36
+ }
37
+ writeFlg = true;
38
+ inBlock = false;
39
+ block.clear();
40
+ continue;
41
+ }
42
+ if (line.startsWith("ブランチ") {
43
+ continue;
44
+ }
45
+ if (line.startsWith("要約:次とマージ") && inBlock) {
46
+ writeFlg = false;
47
+ continue;
48
+ }
49
+ if (inBlock) {
50
+ block.add(line);
51
+ } else {
52
+ bw.write(line); bw.newLine();
53
+ }
54
+ }
55
+ bw.close();
56
+ br.close();
57
+ }
58
+ }
59
+ ```

1

内容修正

2017/03/30 07:47

投稿

tacsheaven
tacsheaven

スコア13707

answer CHANGED
@@ -1,4 +1,6 @@
1
- **ログのうちでどの行が必要でどの行が不要なのかの判断はどうするのか**
2
- が分からないことには、どうにもアドバイスのしようがありせん
1
+ まず、ブランチを出力させたくないなら --template で出力テンプレートを指定てやればいかと思い
3
2
 
4
- hg log -b test の結果を直接書出していますが途中フィルタリングしてやるとかそもそも最初から出力内容を加工するため --template でテンレート指定するとか、いろいろ方法はあります。
3
+ 問題はでれば、のすがこれは出力後に手作業で加工するか、別途加工用にプログラム組むとかかね
4
+ - { を含む行が来たら、その行から、} が出てくるまでの行を出力しない。
5
+ - それ以外の行は普通に出力する
6
+ というような処理を行うプログラムを書く(awk スクリプトでできそうな気もしますが)。