回答編集履歴

2

サンプルコード追加

2017/03/30 07:48

投稿

tacsheaven
tacsheaven

スコア13703

test CHANGED
@@ -11,3 +11,109 @@
11
11
  というような処理を行うプログラムを書く(awk スクリプトでできそうな気もしますが)。
12
12
 
13
13
 
14
+
15
+ 意図を汲んでサンプル
16
+
17
+ ---
18
+
19
+ ```Java
20
+
21
+ public class log {
22
+
23
+ public static void createlog() throws IOException , InterruptedException{
24
+
25
+ //ログ抽出
26
+
27
+ Process runtimeProcess = Runtime.getRuntime().exec("hg log -b test >> temp.txt");
28
+
29
+ int processCompleted = runtimeProcess.waitFor();
30
+
31
+
32
+
33
+ BufferedReader br = new BufferedReader(new FileReader("temp.txt"));
34
+
35
+ BuffererWriter bw = new BufferedWriter(new FileWriter("result.txt"));
36
+
37
+ String line;
38
+
39
+ bool inBlock = false;
40
+
41
+ bool writeFlg = true;
42
+
43
+ List<String> block = new ArrayList<String>();
44
+
45
+ while( (line = br.readLine()) != null) {
46
+
47
+ if (line.equals("{")) {
48
+
49
+ // ブロック始まり
50
+
51
+ inBlock = true;
52
+
53
+ continue;
54
+
55
+ } else if (line.equals("}") && inBlock) {
56
+
57
+ // ブロック終わり
58
+
59
+ if (writeFlg) {
60
+
61
+ bw.write("{"}); bw.newLine();
62
+
63
+ for(String l: block) {
64
+
65
+ bw.write(l); bw.newLine();
66
+
67
+ }
68
+
69
+ bw.write("}"); bw.newLine();
70
+
71
+ }
72
+
73
+ writeFlg = true;
74
+
75
+ inBlock = false;
76
+
77
+ block.clear();
78
+
79
+ continue;
80
+
81
+ }
82
+
83
+ if (line.startsWith("ブランチ") {
84
+
85
+ continue;
86
+
87
+ }
88
+
89
+ if (line.startsWith("要約:次とマージ") && inBlock) {
90
+
91
+ writeFlg = false;
92
+
93
+ continue;
94
+
95
+ }
96
+
97
+ if (inBlock) {
98
+
99
+ block.add(line);
100
+
101
+ } else {
102
+
103
+ bw.write(line); bw.newLine();
104
+
105
+ }
106
+
107
+ }
108
+
109
+ bw.close();
110
+
111
+ br.close();
112
+
113
+ }
114
+
115
+ }
116
+
117
+ ```
118
+
119
+

1

内容修正

2017/03/30 07:47

投稿

tacsheaven
tacsheaven

スコア13703

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