in maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/JGitUtils.java [406:488]
public static List<RevCommit> getRevCommits(
Repository repo,
RevSort[] sortings,
String fromRev,
String toRev,
final Date fromDate,
final Date toDate,
int maxLines)
throws IOException, MissingObjectException, IncorrectObjectTypeException {
List<RevCommit> revs = new ArrayList<>();
ObjectId fromRevId = fromRev != null ? repo.resolve(fromRev) : null;
ObjectId toRevId = toRev != null ? repo.resolve(toRev) : null;
if (sortings == null || sortings.length == 0) {
sortings = new RevSort[] {RevSort.TOPO, RevSort.COMMIT_TIME_DESC};
}
try (RevWalk walk = new RevWalk(repo)) {
for (final RevSort s : sortings) {
walk.sort(s, true);
}
if (fromDate != null && toDate != null) {
// walk.setRevFilter( CommitTimeRevFilter.between( fromDate, toDate ) );
walk.setRevFilter(new RevFilter() {
@Override
public boolean include(RevWalk walker, RevCommit cmit)
throws StopWalkException, MissingObjectException, IncorrectObjectTypeException,
IOException {
int cmtTime = cmit.getCommitTime();
return (cmtTime >= (fromDate.getTime() / 1000)) && (cmtTime <= (toDate.getTime() / 1000));
}
@Override
public RevFilter clone() {
return this;
}
});
} else {
if (fromDate != null) {
walk.setRevFilter(CommitTimeRevFilter.after(fromDate));
}
if (toDate != null) {
walk.setRevFilter(CommitTimeRevFilter.before(toDate));
}
}
if (fromRevId != null) {
RevCommit c = walk.parseCommit(fromRevId);
c.add(RevFlag.UNINTERESTING);
RevCommit real = walk.parseCommit(c);
walk.markUninteresting(real);
}
if (toRevId != null) {
RevCommit c = walk.parseCommit(toRevId);
c.remove(RevFlag.UNINTERESTING);
RevCommit real = walk.parseCommit(c);
walk.markStart(real);
} else {
final ObjectId head = repo.resolve(Constants.HEAD);
if (head == null) {
throw new RuntimeException("Cannot resolve " + Constants.HEAD);
}
RevCommit real = walk.parseCommit(head);
walk.markStart(real);
}
int n = 0;
for (final RevCommit c : walk) {
n++;
if (maxLines != -1 && n > maxLines) {
break;
}
revs.add(c);
}
return revs;
}
}