in maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogConsumer.java [222:271]
private void processGetFile(String line) {
Matcher matcher = FILE_PATTERN.matcher(line);
if (matcher.matches()) {
final String fileinfo = matcher.group(2);
String name = fileinfo;
String originalName = null;
String originalRev = null;
final int n = fileinfo.indexOf(" (");
if (n > 1 && fileinfo.endsWith(")")) {
final String origFileInfo = fileinfo.substring(n);
Matcher matcher2 = ORIG_FILE_PATTERN.matcher(origFileInfo);
if (matcher2.find()) {
// if original file is present, we must extract the affected one from the beginning
name = fileinfo.substring(0, n);
originalName = matcher2.group(1);
originalRev = matcher2.group(2);
}
}
final String actionStr = matcher.group(1);
final ScmFileStatus action;
if ("A".equals(actionStr)) {
// TODO: this may even change to MOVED if we later explore whole changeset and find matching DELETED
action = originalRev == null ? ScmFileStatus.ADDED : ScmFileStatus.COPIED;
} else if ("D".equals(actionStr)) {
action = ScmFileStatus.DELETED;
} else if ("M".equals(actionStr)) {
action = ScmFileStatus.MODIFIED;
} else if ("R".equals(actionStr)) {
action = ScmFileStatus.UPDATED; // == REPLACED in svn terms
} else {
action = ScmFileStatus.UNKNOWN;
}
if (logger.isDebugEnabled()) {
logger.debug(actionStr + " : " + name);
}
final ChangeFile changeFile = new ChangeFile(name, currentRevision);
changeFile.setAction(action);
changeFile.setOriginalName(originalName);
changeFile.setOriginalRevision(originalRev);
currentChange.addFile(changeFile);
status = GET_FILE;
} else if (line.equals(FILE_END_TOKEN)) {
// Create a buffer for the collection of the comment now
// that we are leaving the GET_FILE state.
currentComment = new StringBuilder();
status = GET_COMMENT;
}
}