I am experimenting with JGit for a project and while it mostly works, retrieving the oldest (first) commit does not. Here is the code:
RevWalk rw = new RevWalk(new Repository(
new File("/path/to/git")));
RevCommit oldest;
Iterator<RevCommit> i = rw.iterator();
if (i.hasNext())
oldest = i.next();
Commit c = oldest.asCommit(rw); //oldest is null here, NPE
Does anyone know what I am doing wrong?
I think I found it. You have to reverse the commit log and set a starting point in order to make it start going through the revisions. The following extract does what I was looking for, but I somehow doubt how optimal it is.
RevWalk rw = new RevWalk(new Repository(
new File("/path/to/git")));
RevCommit c = null;
AnyObjectId headId;
try {
headId = git.resolve(Constants.HEAD);
RevCommit root = rw.parseCommit(headId);
rw.sort(RevSort.REVERSE);
rw.markStart(root);
c = rw.next();
} catch (IOException e) {
e.printStackTrace();
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With