使用JGit检索最早的提交

时间:2010-08-04 16:21:40

标签: 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();
    Commit c = oldest.asCommit(rw); //oldest is null here, NPE

有谁知道我做错了什么?

1 个答案:

答案 0 :(得分:10)

我想我找到了它。您必须反转提交日志并设置一个起点,以使其开始通过修订。以下摘录做了我想要的,但我不知道它是多么优化。

 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();
 }