Java 使用JGit检索最早的提交

Java 使用JGit检索最早的提交,java,git,Java,Git,我正在为一个项目试用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()

我正在为一个项目试用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(新存储库(
新文件(“/path/to/git”);
最老的;
迭代器i=rw.Iterator();
if(i.hasNext())
最老的=下一个();
提交c=最早的.asCommit(rw)//这里最早的是空的,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();
 }

我在org.eclipse.jgit.lib.ObjectDownerMap.get(ObjectDownerMap.java:131)在org.eclipse.jgit.revwalk.revwalk.parseAny(revwalk.java:857)在org.eclipse.jgit.revwalk.revwalk.parseCommit(revwalk.java:772)有