in maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/changelog/JGitChangeLogCommand.java [102:160]
protected ChangeLogScmResult executeChangeLogCommand(
ScmProviderRepository repo,
ScmFileSet fileSet,
Date startDate,
Date endDate,
ScmBranch branch,
String datePattern,
ScmVersion startVersion,
ScmVersion endVersion,
ScmVersion version)
throws ScmException {
Git git = null;
boolean isARangeChangeLog = startVersion != null || endVersion != null;
try {
git = JGitUtils.openRepo(fileSet.getBasedir());
boolean versionOnly = startVersion == null && endVersion == null && version != null;
String startRev;
String endRev;
if (versionOnly) {
startRev = null;
endRev = version.getName();
} else {
startRev = startVersion != null ? startVersion.getName() : (isARangeChangeLog ? "HEAD" : null);
endRev = endVersion != null ? endVersion.getName() : (isARangeChangeLog ? "HEAD" : null);
}
List<ChangeEntry> gitChanges =
this.whatchanged(git.getRepository(), null, startRev, endRev, startDate, endDate, -1);
List<ChangeSet> modifications = new ArrayList<>(gitChanges.size());
for (ChangeEntry change : gitChanges) {
ChangeSet scmChange = new ChangeSet();
scmChange.setAuthor(change.getAuthorName());
scmChange.setComment(change.getBody());
scmChange.setDate(change.getAuthorDate());
scmChange.setRevision(change.getCommitHash());
scmChange.setTags(change.getTags());
// X TODO scmChange.setFiles( change.get )
modifications.add(scmChange);
}
ChangeLogSet changeLogSet = new ChangeLogSet(modifications, startDate, endDate);
changeLogSet.setStartVersion(startVersion);
changeLogSet.setEndVersion(endVersion);
return new ChangeLogScmResult("JGit changelog", changeLogSet);
} catch (Exception e) {
throw new ScmException("JGit changelog failure!", e);
} finally {
JGitUtils.closeRepo(git);
}
}