public static Commandline createCommandLine()

in maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogCommand.java [185:254]


    public static Commandline createCommandLine(
            SvnScmProviderRepository repository,
            File workingDirectory,
            ScmBranch branch,
            Date startDate,
            Date endDate,
            ScmVersion startVersion,
            ScmVersion endVersion,
            Integer limit) {
        SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT);

        dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));

        Commandline cl = SvnCommandLineUtils.getBaseSvnCommandLine(workingDirectory, repository);

        cl.createArg().setValue("log");

        cl.createArg().setValue("-v");

        // TODO: May want to add some kind of support for --stop-on-copy and --limit NUM

        if (limit != null && limit > 0) {
            cl.createArg().setValue("--limit");
            cl.createArg().setValue(Integer.toString(limit));
        }

        if (startDate != null) {
            cl.createArg().setValue("-r");

            if (endDate != null) {
                cl.createArg()
                        .setValue("{" + dateFormat.format(startDate) + "}" + ":" + "{" + dateFormat.format(endDate)
                                + "}");
            } else {
                cl.createArg().setValue("{" + dateFormat.format(startDate) + "}:HEAD");
            }
        }

        if (startVersion != null) {
            cl.createArg().setValue("-r");

            if (endVersion != null) {
                if (startVersion.getName().equals(endVersion.getName())) {
                    cl.createArg().setValue(startVersion.getName());
                } else {
                    cl.createArg().setValue(startVersion.getName() + ":" + endVersion.getName());
                }
            } else {
                cl.createArg().setValue(startVersion.getName() + ":HEAD");
            }
        }

        if (branch != null && StringUtils.isNotEmpty(branch.getName())) {
            // By specifying a branch and this repository url below, subversion should show
            // the changelog of that branch, but limit it to paths that also occur in this repository.
            if (branch instanceof ScmTag) {
                String tagUrl = SvnTagBranchUtils.resolveTagUrl(repository, (ScmTag) branch);
                cl.createArg().setValue(tagUrl + "@");
            } else {
                String branchUrl = SvnTagBranchUtils.resolveBranchUrl(repository, branch);
                cl.createArg().setValue(branchUrl + "@");
            }
        }

        if (endVersion == null || !Objects.equals("BASE", endVersion.getName())) {
            cl.createArg().setValue(repository.getUrl() + "@");
        }

        return cl;
    }