private void processGetFile()

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;
        }
    }