Я экспериментирую с JGit для проекта и в то время как он главным образом работает, получение самой старой (первой) фиксации не делает. Вот код:
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
Кто-либо знает то, что я делаю неправильно?
Думаю, я нашел. Вы должны отменить журнал фиксации и установить начальную точку, чтобы он начал проходить ревизии. Следующий отрывок делает то, что я искал, но я почему-то сомневаюсь, насколько он оптимален.
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();
}