2011-09-21 2 views

Répondre

11

Git object model décrit une étiquette comme un objet contenant des informations sur un objet spécifique, par exemple. commit (entre autres choses) il est donc impossible en git pur d'obtenir les informations que vous voulez (l'objet commit n'a pas d'informations sur les tags associés). Cela devrait être fait "en arrière", prendre l'objet de la balise, puis se référer à la validation spécifique. Par conséquent, si vous souhaitez obtenir des informations sur les balises spécifiées pour un commit particulier, vous devez les parcourir (tags) et les choisir.

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

Vous trouverez plus d'informations sur la question [dans ce sujet] (http://dev.eclipse.org/mhonarc/lists/jgit-dev/msg01706.html) dans la liste de diffusion JGit. – Sonson123

+0

Ne devriez-vous pas collecter les tags au lieu des commits? –

+1

Et org.eclipse.jgit.api.Git.tagList(). Call() renvoie la liste . –

4

Si vous savez qu'il ya exactement une étiquette pour votre engagement, vous pouvez utiliser describe, dans les versions plus récentes de JGit (~ November 2013).

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

Vous pouvez analyser le résultat, pour voir si une balise existe, mais s'il peut y avoir plusieurs balises, vous devriez aller avec une solution Marcins.