static Commandline createCommandLine()

in maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/changelog/GitChangeLogCommand.java [241:310]


    static Commandline createCommandLine(
            GitScmProviderRepository repository,
            File workingDirectory,
            ScmBranch branch,
            Date startDate,
            Date endDate,
            ScmVersion startVersion,
            ScmVersion endVersion,
            Integer limit,
            ScmVersion version) {
        SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT);
        dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));

        Commandline cl = GitCommandLineUtils.getBaseGitCommandLine(workingDirectory, "whatchanged");
        cl.createArg().setValue("--format=medium");
        cl.createArg().setValue("--decorate=short");
        cl.createArg().setValue("--raw");
        cl.createArg().setValue("--no-merges");

        if (startDate != null || endDate != null) {
            if (startDate != null) {
                cl.createArg().setValue("--since=" + StringEscapeUtils.escapeJava(dateFormat.format(startDate)));
            }

            if (endDate != null) {
                cl.createArg().setValue("--until=" + StringEscapeUtils.escapeJava(dateFormat.format(endDate)));
            }
        }

        // since this parameter is also used for the output formatting, we need it also if no start nor end date is
        // given
        cl.createArg().setValue("--date=iso");

        if (startVersion != null || endVersion != null) {
            StringBuilder versionRange = new StringBuilder();

            if (startVersion != null) {
                versionRange.append(StringEscapeUtils.escapeJava(startVersion.getName()));
            }

            versionRange.append("..");

            if (endVersion != null) {
                versionRange.append(StringEscapeUtils.escapeJava(endVersion.getName()));
            }

            cl.createArg().setValue(versionRange.toString());

        } else if (version != null) {
            cl.createArg().setValue(StringEscapeUtils.escapeJava(version.getName()));
        }

        if (limit != null && limit > 0) {
            cl.createArg().setValue("--max-count=" + limit);
        }

        if (branch != null && branch.getName() != null && branch.getName().length() > 0) {
            cl.createArg().setValue(branch.getName());
        }

        // Insert a separator to make sure that files aren't interpreted as part of the version spec
        cl.createArg().setValue("--");

        // We have to report only the changes of the current project.
        // This is needed for child projects, otherwise we would get the changelog of the
        // whole parent-project including all childs.
        cl.createArg().setValue(".");

        return cl;
    }