2014-09-10 18 views
7

Bu soru, bu sorunun tersi: JGit how do i get the SHA1 from a RevCommit?.RevCommit veya ObjectId bir SHA1 ID dizesinden JGit ile nasıl edinilir?

Belirli bir işlevin SHA1 kimliğini bir dize olarak verilmişse, ObjectId veya ilişkili RevCommit JGit'te nasıl edinebilirim? şey yukarıda Bu uygulama daha iyi

RevCommit findCommit(String SHAId) 
{ 
    Iterable<RevCommit> commits = git_.log().call();  
    for (RevCommit commit: commits) 
    { 
     if (commit.getName().equals(SHAId)) 
      return commit; 
    }  
    return null; 
} 

var mı: İşte

yineler tüm RevCommit s aracılığıyla olası bir cevap, nedir?

cevap

10

Dizeyi ilk olarak ObjectId haline dönüştürmek ve daha sonra RevWalk ürününe bakmak daha kolaydır.

ObjectId commitId = ObjectId.fromString("ab434..."); 
RevWalk revWalk = new RevWalk(repository); 
RevCommit commit = revWalk.parseCommit(commitId); 
revWalk.close() 
+1

[jgit-yemek kitabı] (https://github.com/ centic9/jgit-cookbook) bunun için hazır bir snippet'e sahip. [https://github.com/centic9/jgit-cookbook/blob/master/src/main/java/org/dstadler/jgit/ aPI/GetRevCommitFromObjectId.java). – centic

1

Bildirim RevWalk artık otomatik kapatılabilir, böylece de deneyin-ile-kaynaklar deyimi kullanabilirsiniz:

try (RevWalk revWalk = new RevWalk(repository)) { 
    RevCommit commit = revWalk.parseCommit(commitId); 
}