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