Chcę użyć interfejsu API JGit do pobrania znaczników powiązanych z konkretnym hashiem zatwierdzenia (jeśli istnieje)?JGit: Odzyskaj tag związany z zatwierdzeniem git.
Proszę podać fragment kodu dla tego samego.
Chcę użyć interfejsu API JGit do pobrania znaczników powiązanych z konkretnym hashiem zatwierdzenia (jeśli istnieje)?JGit: Odzyskaj tag związany z zatwierdzeniem git.
Proszę podać fragment kodu dla tego samego.
Git object model opisuje tag jako obiekt zawierający informacje o konkretnym obiekcie tj. commit (między innymi) więc nie jest możliwe w czystym gicie uzyskanie żądanych informacji (obiekt commit nie ma informacji o powiązanych tagach). Należy to zrobić "wstecz", podejmij obiekt znacznika, a następnie odwołaj się do konkretnego zatwierdzenia.
Jeśli więc chcesz uzyskać informacje o znacznikach określonych dla konkretnego zatwierdzenia, powinieneś je przetestować (znaczniki) i wybrać odpowiednie.
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());
}
}
Jeśli wiesz, że istnieje dokładnie jeden tagu dla popełnić, można użyć describe, w nowszych wersjach JGit (~ November 2013).
Git.wrap(repository).describe().setTarget(ObjectId.fromString("hash")).call()
Można analizować wyniki, aby sprawdzić, czy tag istnieje, ale jeśli nie może być wiele znaczników, należy udać się roztworem Marcins.
Więcej informacji na temat tego pytania można znaleźć [w tym temacie] (http://dev.eclipse.org/mhonarc/lists/jgit-dev/msg01706.html) z listy mailingowej JGit. – Sonson123
Nie powinieneś zbierać tagów zamiast zatwierdzeń? –
i org.eclipse.jgit.api.Git.tagList(). Call() zwraca listę . –