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 Details

    • GIT_TIMESTAMP_PATTERN

      private static final 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:
    • STATUS_GET_HEADER

      private static final int STATUS_GET_HEADER
      State machine constant: expecting header
      See Also:
    • STATUS_GET_AUTHOR

      private static final int STATUS_GET_AUTHOR
      State machine constant: expecting author information
      See Also:
    • STATUS_RAW_TREE

      private static final int STATUS_RAW_TREE
      State machine constant: expecting parent hash information
      See Also:
    • STATUS_RAW_PARENT

      private static final int STATUS_RAW_PARENT
      State machine constant: expecting parent hash information
      See Also:
    • STATUS_RAW_AUTHOR

      private static final int STATUS_RAW_AUTHOR
      State machine constant: expecting author name, email and timestamp information
      See Also:
    • STATUS_RAW_COMMITTER

      private static final int STATUS_RAW_COMMITTER
      State machine constant: expecting committer name, email and timestamp information
      See Also:
    • STATUS_GET_DATE

      private static final int STATUS_GET_DATE
      State machine constant: expecting date information
      See Also:
    • STATUS_GET_FILE

      private static final int STATUS_GET_FILE
      State machine constant: expecting file information
      See Also:
    • STATUS_GET_COMMENT

      private static final int STATUS_GET_COMMENT
      State machine constant: expecting comments
      See Also:
    • HEADER_PATTERN

      private static final Pattern HEADER_PATTERN
      The pattern used to match git header lines
    • AUTHOR_PATTERN

      private static final Pattern AUTHOR_PATTERN
      The pattern used to match git author lines
    • RAW_TREE_PATTERN

      private static final Pattern RAW_TREE_PATTERN
      The pattern used to match git tree hash lines (raw mode)
    • RAW_PARENT_PATTERN

      private static final Pattern RAW_PARENT_PATTERN
      The pattern used to match git parent hash lines (raw mode)
    • RAW_AUTHOR_PATTERN

      private static final Pattern RAW_AUTHOR_PATTERN
      The pattern used to match git author lines (raw mode)
    • RAW_COMMITTER_PATTERN

      private static final Pattern RAW_COMMITTER_PATTERN
      The pattern used to match git author lines (raw mode)
    • DATE_PATTERN

      private static final Pattern DATE_PATTERN
      The pattern used to match git date lines
    • FILE_PATTERN

      private static final Pattern FILE_PATTERN
      The pattern used to match git file lines
    • status

      private int status
      Current status of the parser
    • entries

      private List<ChangeSet> entries
      List of change log entries
    • currentChange

      private ChangeSet currentChange
      The current log entry being processed by the parser
    • currentRevision

      private String currentRevision
      The current revision of the entry being processed by the parser
    • currentComment

      private StringBuilder currentComment
      The current comment of the entry being processed by the parser
    • userDateFormat

      private String userDateFormat
  • Constructor Details

    • GitChangeLogConsumer

      public GitChangeLogConsumer(ScmLogger logger, String userDateFormat)
      Default constructor.
  • Method Details

    • getModifications

      public List<ChangeSet> getModifications()
    • consumeLine

      public void consumeLine(String line)
    • processGetHeader

      private void processGetHeader(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(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(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(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(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(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(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(String line, 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(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(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()