JGit: получить тег, связанный с коммитом git

Я хочу использовать JGit API для получения тегов, связанных с определенным хэшем коммита (если он есть)?

Пожалуйста, предоставьте фрагмент кода для того же.


person Kamal    schedule 21.09.2011    source источник


Ответы (2)


объектная модель Git описывает тег как объект, содержащий информацию о конкретном объекте, т.е. commit (среди прочего), поэтому в чистом git невозможно получить нужную информацию (объект фиксации не имеет информации о связанных тегах). Это нужно сделать «назад», взять объект тега, а затем обратиться к конкретному коммиту.

Поэтому, если вы хотите получить информацию о тегах, указанных для конкретной фиксации, вы должны перебрать их (теги) и выбрать подходящие.

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());
    }
}
person Marcin Pietraszek    schedule 21.09.2011
comment
Дополнительную информацию по этому вопросу можно найти в этой ветке от список рассылки JGit. - person Sonson123; 16.02.2013
comment
Разве вы не должны собирать теги вместо коммитов? - person Marco Eckstein; 10.08.2016
comment
И org.eclipse.jgit.api.Git.tagList().call() возвращает List‹Ref›. - person Marco Eckstein; 10.08.2016