Получение самого старого коммита с помощью JGit - PullRequest
7 голосов
/ 04 августа 2010

Я экспериментирую с 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 Ответ

10 голосов
/ 05 августа 2010

Я думаю, что нашел это.Вы должны обратить журнал фиксации и установить начальную точку, чтобы он начал проходить ревизии.Следующий отрывок делает то, что я искал, но я почему-то сомневаюсь, насколько он оптимален.

 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();
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...