2010-08-04 15 views
6

Estoy experimentando con JGit para un proyecto y aunque funciona en su mayoría, recuperar la confirmación más antigua (la primera) no. Aquí está el código:Recuperando la confirmación más antigua con 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 

¿Alguien sabe lo que estoy haciendo mal?

Respuesta

9

Creo que lo encontré. Debe invertir el registro de compromiso y establecer un punto de inicio para que comience a revisar las revisiones. El siguiente extracto hace lo que estaba buscando, pero de alguna manera dudo qué tan óptimo es.

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

tengo '' 'java.lang.NullPointerException \t en org.eclipse.jgit.lib.ObjectIdOwnerMap.get (ObjectIdOwnerMap.java:131) \t en org.eclipse.jgit.revwalk.RevWalk. parseAny (RevWalk.java:857) \t en org.eclipse.jgit.revwalk.RevWalk.parseCommit (RevWalk.java:772) '' ' – MariuszS

Cuestiones relacionadas