Desidero utilizzare l'API JGit per recuperare i tag associati a un hash di commit specifico (se presente)?JGit: recupera il tag associato a un commit git
Si prega di fornire lo snippet di codice per lo stesso.
Desidero utilizzare l'API JGit per recuperare i tag associati a un hash di commit specifico (se presente)?JGit: recupera il tag associato a un commit git
Si prega di fornire lo snippet di codice per lo stesso.
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());
}
}
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.
È 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
Non dovresti raccogliere i tag al posto dei commit? –
E org.eclipse.jgit.api.Git.tagList(). Call() restituisce l'elenco . –