Я хочу использовать JGit API для получения тегов, связанных с определенным хэшем коммита (если он есть)?
Пожалуйста, предоставьте фрагмент кода для того же.
Я хочу использовать JGit API для получения тегов, связанных с определенным хэшем коммита (если он есть)?
Пожалуйста, предоставьте фрагмент кода для того же.
объектная модель 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());
}
}
Если вы знаете, что для вашей фиксации есть только один тег, вы можете использовать describe в более поздних версиях JGit (~ ноябрь 2013 г. а>).
Git.wrap(repository).describe().setTarget(ObjectId.fromString("hash")).call()
Вы можете проанализировать результат, чтобы увидеть, существует ли тег, но если тегов может быть несколько, вам следует использовать решение Marcins.