我想使用JGit API检索与特定提交哈希(如果有)关联的标签?
请提供相同的代码段。
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());
}
}
[如果您知道提交时恰好有一个标记,则可以在最新版本的JGit(describe)中使用~ November 2013。
Git.wrap(repository).describe().setTarget(ObjectId.fromString("hash")).call()
您可以解析结果,以查看是否存在标签,但是如果可以有多个标签,则应使用Marcins解决方案。
在最新版本(3.7.1)中,git.tagList().call();
返回List<Ref>
而不是List<RevTag>
,因此该方法不能再使用,是否有其他解决方法?