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