@@ -46,13 +46,12 @@ public class SSCMHistoryParser implements Executor.StreamHandler {
46
46
this .repository = repository ;
47
47
}
48
48
49
- private static final String FILTER_ACTION_PATTERN = "^add to branch$" ;
50
- private static final String ACTION_PATTERN = "[a-z ]+" ;
49
+ private static final String ACTION_PATTERN = "[a-z][a-z ]+" ;
51
50
private static final String USER_PATTERN = "\\ w+" ;
52
51
private static final String VERSION_PATTERN = "\\ d+" ;
53
52
private static final String TIME_PATTERN = "\\ d{1,2}/\\ d{1,2}/\\ d{4} \\ d{1,2}:\\ d{2} [AP]M" ;
54
53
private static final String COMMENT_START_PATTERN = "Comments - " ;
55
- // ^([a-z ]+)(?:\[.*?\])?\s+(\w+)\s+(\d+)\s+(\d{1,2}/\d{1,2}/\d{4} \d{1,2}:\d{2} [AP]M)$\s*(?:Comments - )?
54
+ // ^([a-z][a-z ]+)(?:\[( .*?) \])?\s+(\w+)\s+(\d+)\s+(\d{1,2}/\d{1,2}/\d{4} \d{1,2}:\d{2} [AP]M)$\s*(?:Comments - )?
56
55
private static final Pattern HISTORY_PATTERN = Pattern .compile ("^(" + ACTION_PATTERN + ")(?:\\ [(.*?)\\ ])?\\ s+(" + USER_PATTERN + ")\\ s+(" + VERSION_PATTERN + ")\\ s+(" + TIME_PATTERN + ")$\\ s*(?:" + COMMENT_START_PATTERN + ")?" ,
57
56
Pattern .MULTILINE );
58
57
@@ -95,29 +94,34 @@ public void processStream(InputStream input) throws IOException {
95
94
entries .add (0 , entry );
96
95
entry = null ;
97
96
}
98
- if (! matcher .group (1 ). matches ( FILTER_ACTION_PATTERN )) {
99
- String revision = matcher .group (4 );
100
- String author = matcher .group (3 );
101
- String branch = matcher .group (2 );
97
+ String revision = matcher .group (4 );
98
+ String author = matcher .group (3 );
99
+ String context = matcher .group (2 );
100
+ String date = matcher .group (5 );
102
101
103
- long currentRevision = Long .parseLong (revision );
104
- if (revisionCounter < currentRevision ) {
105
- revisionCounter = currentRevision ;
106
-
107
- entry = new HistoryEntry ();
108
- // Add branch name to message. Helps when branch name is used
109
- // as indicator of why promote was made.
110
- if (branch != null )
111
- entry .appendMessage ("[" + branch + "] " );
112
- entry .setAuthor (author );
113
- entry .setRevision (revision );
114
- try {
115
- entry .setDate (df .parse (matcher .group (5 )));
116
- } catch (ParseException ex ) {
117
- OpenGrokLogger .getLogger ().log (Level .WARNING , "Failed to parse date: '" + matcher .group (5 ) + "'" , ex );
118
- }
119
- entry .setActive (true );
102
+ long currentRevision = 0 ;
103
+ try {
104
+ currentRevision = Long .parseLong (revision );
105
+ } catch (NumberFormatException ex ) {
106
+ OpenGrokLogger .getLogger ().log (Level .WARNING , "Failed to parse revision: '" + revision + "'" , ex );
107
+ }
108
+ // We're only interested in history entries that change file content
109
+ if (revisionCounter < currentRevision ) {
110
+ revisionCounter = currentRevision ;
111
+
112
+ entry = new HistoryEntry ();
113
+ // Add context of action to message. Helps when branch name is used
114
+ // as indicator of why promote was made.
115
+ if (context != null )
116
+ entry .appendMessage ("[" + context + "] " );
117
+ entry .setAuthor (author );
118
+ entry .setRevision (revision );
119
+ try {
120
+ entry .setDate (df .parse (date ));
121
+ } catch (ParseException ex ) {
122
+ OpenGrokLogger .getLogger ().log (Level .WARNING , "Failed to parse date: '" + date + "'" , ex );
120
123
}
124
+ entry .setActive (true );
121
125
}
122
126
prevEntryEnd = matcher .end ();
123
127
}
0 commit comments