2011-09-21 4 views

답변

11

Git object model은 특정 개체에 대한 정보를 포함하는 개체로 태그를 설명합니다. 커밋 (다른 것들 중에서도) 따라서 순수한 자식에는 원하는 정보를 얻을 수 없습니다 (커밋 객체는 관련 태그에 대한 정보가 없습니다). 이것은 "거꾸로"수행되어야하고, 태그 객체를 취한 다음 특정 커밋을 참조해야합니다.

특정 커밋에 지정된 태그에 대한 정보를 얻고 싶다면 태그를 반복하여 (태그) 적절하게 선택해야합니다.

List<RevTag> list = git.tagList().call(); 
ObjectId commitId = ObjectId.fromString("hash"); 
Collection<ObjectId> commits = new LinkedList<ObjectId>(); 
for (RevTag tag : list) { 
    RevObject object = tag.getObject(); 
    if (object.getId().equals(commitId)) {; 
     commits.add(object.getId()); 
    } 
} 
+1

더 많은 질문에 대한 정보는 JGit 메일 링리스트의 [이 스레드에서] (http://dev.eclipse.org/mhonarc/lists/jgit-dev/msg01706.html)에서 찾을 수 있습니다. – Sonson123

+0

커밋 대신 태그를 수집하면 안됩니까? –

+1

그리고 org.eclipse.jgit.api.Git.tagList(). call()은 List 을 반환합니다. –

4

당신이 당신의 커밋에 대해 정확히 하나 개의 태그가 있다는 것을 알고 있다면, 당신은 JGit의 최신 버전 (~ November 2013)에서, describe를 사용할 수 있습니다.

Git.wrap(repository).describe().setTarget(ObjectId.fromString("hash")).call() 

태그가 있는지 확인하기 위해 결과를 분석 할 수 있지만 여러 개의 태그가있을 수있는 경우 Marcins 솔루션을 사용해야합니다.

관련 문제