2014-09-10 5 views
7

이 질문은이 질문의 역입니다 : JGit how do i get the SHA1 from a RevCommit?.JGit을 사용하여 SHA1 ID 문자열에서 RevCommit 또는 ObjectId를 얻는 방법?

특정 커밋의 SHA1 ID가 문자열로 주어지면 ObjectId 또는 연결된 RevCommit을 JGit에서 어떻게 구할 수 있습니까? 아무것도 이상이 구현보다 더 나은

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

있습니까 : 여기

는 반복 모든 RevCommit의를 통해 가능한 답이다?

답변

10

먼저 문자열을 ObjectId으로 변환 한 다음 RevWalk으로 찾아 보는 것이 더 쉽습니다.

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

에서 [jgit - 요리 책 (https://github.com/를 centic9/jgit-cookbook)에는이 [여기] (https://github.com/centic9/jgit-cookbook/blob/master/src/main/java/org/dstadler/jgit/)에 대한 바로 실행 가능한 스 니펫이 있습니다. api/GetRevCommitFromObjectId.java). – centic

1

공지 사항 RevWalk 것을 이제 자동 클로우즈, 그래서 당신은 또한 시도 -과 - 자원 문 사용할 수 있습니다

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