in maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/status/GitStatusConsumer.java [143:213]
public void consumeLine(String line) {
if (logger.isDebugEnabled()) {
logger.debug(line);
}
if (line == null || line.isEmpty()) {
return;
}
ScmFileStatus status = null;
List<String> files = new ArrayList<String>();
Matcher matcher;
if ((matcher = ADDED_PATTERN.matcher(line)).find()) {
status = ScmFileStatus.ADDED;
files.add(resolvePath(matcher.group(1), relativeRepositoryPath));
} else if ((matcher = MODIFIED_PATTERN.matcher(line)).find()) {
status = ScmFileStatus.MODIFIED;
files.add(resolvePath(matcher.group(1), relativeRepositoryPath));
} else if ((matcher = DELETED_PATTERN.matcher(line)).find()) {
status = ScmFileStatus.DELETED;
files.add(resolvePath(matcher.group(1), relativeRepositoryPath));
} else if ((matcher = RENAMED_PATTERN.matcher(line)).find()) {
status = ScmFileStatus.RENAMED;
files.add(resolvePath(matcher.group(1), relativeRepositoryPath));
files.add(resolvePath(matcher.group(2), relativeRepositoryPath));
logger.debug("RENAMED status for line '" + line + "' files added '" + matcher.group(1) + "' '"
+ matcher.group(2));
} else {
logger.warn("Ignoring unrecognized line: " + line);
return;
}
// If the file isn't a file; don't add it.
if (!files.isEmpty()) {
if (workingDirectory != null) {
if (status == ScmFileStatus.RENAMED) {
String oldFilePath = files.get(0);
String newFilePath = files.get(1);
if (isFile(oldFilePath)) {
logger.debug("file '" + oldFilePath + "' is a file");
return;
} else {
logger.debug("file '" + oldFilePath + "' not a file");
}
if (!isFile(newFilePath)) {
logger.debug("file '" + newFilePath + "' not a file");
return;
} else {
logger.debug("file '" + newFilePath + "' is a file");
}
} else if (status == ScmFileStatus.DELETED) {
if (isFile(files.get(0))) {
return;
}
} else {
if (!isFile(files.get(0))) {
return;
}
}
}
for (String file : files) {
if (this.scmFileSet != null && !isFileNameInFileList(this.scmFileSet.getFileList(), file)) {
// skip adding this file
} else {
changedFiles.add(new ScmFile(file, status));
}
}
}
}