in maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/command/diff/GitDiffConsumer.java [105:165]
public void consumeLine(String line) {
Matcher matcher = DIFF_FILES_PATTERN.matcher(line);
if (matcher.matches()) {
// start a new file
currentFile = matcher.group(1);
changedFiles.add(new ScmFile(currentFile, ScmFileStatus.MODIFIED));
currentDifference = new StringBuilder();
differences.put(currentFile, currentDifference);
patch.append(line).append("\n");
return;
}
if (currentFile == null) {
if (logger.isWarnEnabled()) {
logger.warn("Unparseable line: '" + line + "'");
}
patch.append(line).append("\n");
return;
} else if (line.startsWith(INDEX_LINE_TOKEN)) {
// skip, though could parse to verify start revision and end revision
patch.append(line).append("\n");
} else if (line.startsWith(NEW_FILE_MODE_TOKEN) || line.startsWith(DELETED_FILE_MODE_TOKEN)) {
// skip, though could parse to verify file mode
patch.append(line).append("\n");
} else if (line.startsWith(START_REVISION_TOKEN)) {
// skip, though could parse to verify filename, start revision
patch.append(line).append("\n");
} else if (line.startsWith(END_REVISION_TOKEN)) {
// skip, though could parse to verify filename, end revision
patch.append(line).append("\n");
} else if (line.startsWith(SIMILARITY_INDEX_LINE_TOKEN)) {
// skip
patch.append(line).append("\n");
} else if (line.startsWith(RENAME_FROM_LINE_TOKEN) || line.startsWith(RENAME_TO_LINE_TOKEN)) {
// skip, though could parse to verify filename
patch.append(line).append("\n");
} else if (line.startsWith(ADDED_LINE_TOKEN)
|| line.startsWith(REMOVED_LINE_TOKEN)
|| line.startsWith(UNCHANGED_LINE_TOKEN)
|| line.startsWith(CHANGE_SEPARATOR_TOKEN)
|| line.equals(NO_NEWLINE_TOKEN)) {
// add to buffer
currentDifference.append(line).append("\n");
patch.append(line).append("\n");
} else {
// TODO: handle property differences
if (logger.isWarnEnabled()) {
logger.warn("Unparseable line: '" + line + "'");
}
patch.append(line).append("\n");
// skip to next file
currentFile = null;
currentDifference = null;
}
}