我想使用 JGit API 来检索与特定提交哈希关联的标签(如果有的话)?
请提供相同的代码片段。
Git 对象模型将标签描述为包含特定对象信息的对象,即。提交(除其他外)因此在纯 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());
}
}
如果您知道您的提交只有一个标签,您可以在 JGit 的更新版本(~2013 年 11 月)中使用describe 。
Git.wrap(repository).describe().setTarget(ObjectId.fromString("hash")).call()
您可以解析结果,查看是否存在标签,但如果可以有多个标签,您应该使用 Marcins 解决方案。