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