2011-09-21 16 views

risposta

11

Git object model descrive il tag come un oggetto contenente informazioni su un oggetto specifico, ad es. commit (tra le altre cose) quindi è impossibile in git puro ottenere le informazioni che vuoi (gli oggetti commit non hanno informazioni sui tag correlati). Questo dovrebbe essere fatto "all'indietro", prendere l'oggetto tag e quindi fare riferimento a commit specifico.

Quindi, se si desidera ottenere informazioni sui tag specificati per un particolare commit, è necessario eseguire iterazioni su di essi (tag) e scegliere appropriato.

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

È possibile trovare ulteriori informazioni sulla domanda [in questa discussione] (http://dev.eclipse.org/mhonarc/lists/jgit-dev/msg01706.html) dalla mailing list di JGit. – Sonson123

+0

Non dovresti raccogliere i tag al posto dei commit? –

+1

E org.eclipse.jgit.api.Git.tagList(). Call() restituisce l'elenco . –

4

Se si sa che c'è esattamente un tag per il vostro impegno, è possibile utilizzare describe, nelle versioni più recenti di JGit (~ November 2013).

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

Si potrebbe analizzare il risultato, per vedere se un variabile esiste, ma se non ci può essere più tag, si dovrebbe andare con la soluzione Marcins.