2010-08-04 4 views
6

J'expérimente JGit pour un projet et même si cela fonctionne principalement, la récupération de la plus ancienne (première) validation ne fonctionne pas. Voici le code:Récupération de la plus ancienne validation avec 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 

Est-ce que quelqu'un sait ce que je fais mal?

Répondre

9

Je pense que je l'ai trouvé. Vous devez inverser le journal de validation et définir un point de départ afin de le faire commencer à passer par les révisions. L'extrait suivant fait ce que je cherchais, mais je doute d'une façon ou d'une autre de son optimisme.

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

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

Questions connexes