2011-09-21 16 views

Respuesta

11

Git object model describe la etiqueta como un objeto que contiene información sobre un objeto específico, es decir. commit (entre otras cosas) por lo tanto es imposible en pure git obtener la información que desea (commit object no tiene información sobre etiquetas relacionadas). Esto debe hacerse "hacia atrás", tomar el objeto etiqueta y luego referirse a la confirmación específica.

Por lo tanto, si desea obtener información sobre las etiquetas especificadas para un compromiso particular, debe repetirlas (etiquetas) y elegir el apropiado.

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

Se puede encontrar más información sobre la pregunta [en este hilo] (http://dev.eclipse.org/mhonarc/lists/jgit-dev/msg01706.html) de la lista de correo de JGit. – Sonson123

+0

¿No debería recoger las etiquetas en lugar de las confirmaciones? –

+1

Y org.eclipse.jgit.api.Git.tagList(). Call() devuelve List . –

4

Si usted sabe que no es exactamente una etiqueta para su confirmación, usted podría utilizar describe, en las versiones más recientes de JGit (~ November 2013).

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

Se podría analizar el resultado, para ver si existe una etiqueta, pero si no puede haber varias etiquetas, hay que ir con solución Marcins.