Class GitChangeLogConsumer
- java.lang.Object
-
- org.apache.maven.scm.util.AbstractConsumer
-
- org.apache.maven.scm.provider.git.gitexe.command.changelog.GitChangeLogConsumer
-
- All Implemented Interfaces:
org.codehaus.plexus.util.cli.StreamConsumer
public class GitChangeLogConsumer extends AbstractConsumer
-
-
Field Summary
Fields Modifier and Type Field Description private static java.util.regex.Pattern
AUTHOR_PATTERN
The pattern used to match git author linesprivate ChangeSet
currentChange
The current log entry being processed by the parserprivate java.lang.StringBuilder
currentComment
The current comment of the entry being processed by the parserprivate java.lang.String
currentRevision
The current revision of the entry being processed by the parserprivate static java.util.regex.Pattern
DATE_PATTERN
The pattern used to match git date linesprivate java.util.List<ChangeSet>
entries
List of change log entriesprivate static java.util.regex.Pattern
FILE_PATTERN
The pattern used to match git file linesprivate static java.lang.String
GIT_TIMESTAMP_PATTERN
Date formatter for git timestamp we use iso format cli git log --date=iso sample : 2008-08-06 01:37:18 +0200private static java.util.regex.Pattern
HEADER_PATTERN
The pattern used to match git header linesprivate static java.util.regex.Pattern
RAW_AUTHOR_PATTERN
The pattern used to match git author lines (raw mode)private static java.util.regex.Pattern
RAW_COMMITTER_PATTERN
The pattern used to match git author lines (raw mode)private static java.util.regex.Pattern
RAW_PARENT_PATTERN
The pattern used to match git parent hash lines (raw mode)private static java.util.regex.Pattern
RAW_TREE_PATTERN
The pattern used to match git tree hash lines (raw mode)private int
status
Current status of the parserprivate static int
STATUS_GET_AUTHOR
State machine constant: expecting author informationprivate static int
STATUS_GET_COMMENT
State machine constant: expecting commentsprivate static int
STATUS_GET_DATE
State machine constant: expecting date informationprivate static int
STATUS_GET_FILE
State machine constant: expecting file informationprivate static int
STATUS_GET_HEADER
State machine constant: expecting headerprivate static int
STATUS_RAW_AUTHOR
State machine constant: expecting author name, email and timestamp informationprivate static int
STATUS_RAW_COMMITTER
State machine constant: expecting committer name, email and timestamp informationprivate static int
STATUS_RAW_PARENT
State machine constant: expecting parent hash informationprivate static int
STATUS_RAW_TREE
State machine constant: expecting parent hash informationprivate java.lang.String
userDateFormat
-
Constructor Summary
Constructors Constructor Description GitChangeLogConsumer(ScmLogger logger, java.lang.String userDateFormat)
Default constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
addParentRevision(java.lang.String hash)
In git log, both parent and merged revisions are called parent.void
consumeLine(java.lang.String line)
java.util.List<ChangeSet>
getModifications()
private void
processGetAuthor(java.lang.String line)
Process the current input line in the STATUS_GET_AUTHOR state.private void
processGetComment(java.lang.String line)
Process the current input line in the GET_COMMENT state.private void
processGetDate(java.lang.String line, java.util.Locale locale)
Process the current input line in the STATUS_GET_DATE state.private void
processGetFile(java.lang.String line)
Process the current input line in the GET_FILE state.private void
processGetHeader(java.lang.String line)
Process the current input line in the GET_HEADER state.private void
processGetRawAuthor(java.lang.String line)
Process the current input line in the STATUS_RAW_AUTHOR state.private void
processGetRawCommitter(java.lang.String line)
Process the current input line in the STATUS_RAW_AUTHOR state.private void
processGetRawParent(java.lang.String line)
Process the current input line in the STATUS_RAW_PARENT state.private void
processGetRawTree(java.lang.String line)
Process the current input line in the STATUS_RAW_TREE state.private void
resetChangeLog()
-
Methods inherited from class org.apache.maven.scm.util.AbstractConsumer
getLogger, parseDate, parseDate, setLogger
-
-
-
-
Field Detail
-
GIT_TIMESTAMP_PATTERN
private static final java.lang.String GIT_TIMESTAMP_PATTERN
Date formatter for git timestamp we use iso format cli git log --date=iso sample : 2008-08-06 01:37:18 +0200- See Also:
- Constant Field Values
-
STATUS_GET_HEADER
private static final int STATUS_GET_HEADER
State machine constant: expecting header- See Also:
- Constant Field Values
-
STATUS_GET_AUTHOR
private static final int STATUS_GET_AUTHOR
State machine constant: expecting author information- See Also:
- Constant Field Values
-
STATUS_RAW_TREE
private static final int STATUS_RAW_TREE
State machine constant: expecting parent hash information- See Also:
- Constant Field Values
-
STATUS_RAW_PARENT
private static final int STATUS_RAW_PARENT
State machine constant: expecting parent hash information- See Also:
- Constant Field Values
-
STATUS_RAW_AUTHOR
private static final int STATUS_RAW_AUTHOR
State machine constant: expecting author name, email and timestamp information- See Also:
- Constant Field Values
-
STATUS_RAW_COMMITTER
private static final int STATUS_RAW_COMMITTER
State machine constant: expecting committer name, email and timestamp information- See Also:
- Constant Field Values
-
STATUS_GET_DATE
private static final int STATUS_GET_DATE
State machine constant: expecting date information- See Also:
- Constant Field Values
-
STATUS_GET_FILE
private static final int STATUS_GET_FILE
State machine constant: expecting file information- See Also:
- Constant Field Values
-
STATUS_GET_COMMENT
private static final int STATUS_GET_COMMENT
State machine constant: expecting comments- See Also:
- Constant Field Values
-
HEADER_PATTERN
private static final java.util.regex.Pattern HEADER_PATTERN
The pattern used to match git header lines
-
AUTHOR_PATTERN
private static final java.util.regex.Pattern AUTHOR_PATTERN
The pattern used to match git author lines
-
RAW_TREE_PATTERN
private static final java.util.regex.Pattern RAW_TREE_PATTERN
The pattern used to match git tree hash lines (raw mode)
-
RAW_PARENT_PATTERN
private static final java.util.regex.Pattern RAW_PARENT_PATTERN
The pattern used to match git parent hash lines (raw mode)
-
RAW_AUTHOR_PATTERN
private static final java.util.regex.Pattern RAW_AUTHOR_PATTERN
The pattern used to match git author lines (raw mode)
-
RAW_COMMITTER_PATTERN
private static final java.util.regex.Pattern RAW_COMMITTER_PATTERN
The pattern used to match git author lines (raw mode)
-
DATE_PATTERN
private static final java.util.regex.Pattern DATE_PATTERN
The pattern used to match git date lines
-
FILE_PATTERN
private static final java.util.regex.Pattern FILE_PATTERN
The pattern used to match git file lines
-
status
private int status
Current status of the parser
-
entries
private java.util.List<ChangeSet> entries
List of change log entries
-
currentChange
private ChangeSet currentChange
The current log entry being processed by the parser
-
currentRevision
private java.lang.String currentRevision
The current revision of the entry being processed by the parser
-
currentComment
private java.lang.StringBuilder currentComment
The current comment of the entry being processed by the parser
-
userDateFormat
private java.lang.String userDateFormat
-
-
Constructor Detail
-
GitChangeLogConsumer
public GitChangeLogConsumer(ScmLogger logger, java.lang.String userDateFormat)
Default constructor.
-
-
Method Detail
-
getModifications
public java.util.List<ChangeSet> getModifications()
-
consumeLine
public void consumeLine(java.lang.String line)
-
processGetHeader
private void processGetHeader(java.lang.String line)
Process the current input line in the GET_HEADER state. The author, date, and the revision of the entry are gathered. Note, Git does not have per-file revisions, instead, the entire branch is given a single revision number, which is also used for the revision number of each file.- Parameters:
line
- A line of text from the git log output
-
processGetAuthor
private void processGetAuthor(java.lang.String line)
Process the current input line in the STATUS_GET_AUTHOR state. This state gathers all of the author information that are part of a log entry.- Parameters:
line
- a line of text from the git log output
-
processGetRawTree
private void processGetRawTree(java.lang.String line)
Process the current input line in the STATUS_RAW_TREE state. This state gathers tree hash part of a log entry.- Parameters:
line
- a line of text from the git log output
-
processGetRawParent
private void processGetRawParent(java.lang.String line)
Process the current input line in the STATUS_RAW_PARENT state. This state gathers parent revisions of a log entry.- Parameters:
line
- a line of text from the git log output
-
addParentRevision
private void addParentRevision(java.lang.String hash)
In git log, both parent and merged revisions are called parent. Fortunately, the real parent comes first in the log. This method takes care of the difference.- Parameters:
hash
- -
-
processGetRawAuthor
private void processGetRawAuthor(java.lang.String line)
Process the current input line in the STATUS_RAW_AUTHOR state. This state gathers all the author information of a log entry.- Parameters:
line
- a line of text from the git log output
-
processGetRawCommitter
private void processGetRawCommitter(java.lang.String line)
Process the current input line in the STATUS_RAW_AUTHOR state. This state gathers all the committer information of a log entry.- Parameters:
line
- a line of text from the git log output
-
processGetDate
private void processGetDate(java.lang.String line, java.util.Locale locale)
Process the current input line in the STATUS_GET_DATE state. This state gathers all of the date information that are part of a log entry.- Parameters:
line
- a line of text from the git log output
-
processGetComment
private void processGetComment(java.lang.String line)
Process the current input line in the GET_COMMENT state. This state gathers all of the comments that are part of a log entry.- Parameters:
line
- a line of text from the git log output
-
processGetFile
private void processGetFile(java.lang.String line)
Process the current input line in the GET_FILE state. This state adds each file entry line to the current change log entry. Note, the revision number for the entire entry is used for the revision number of each file.- Parameters:
line
- A line of text from the git log output
-
resetChangeLog
private void resetChangeLog()
-
-