10

我想使用 JGit API 来检索与特定提交哈希关联的标签(如果有的话)?

请提供相同的代码片段。

4

2 回答 2

12

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());
    }
}
于 2011-09-21T16:37:06.867 回答
6

如果您知道您的提交只有一个标签,您可以在 JGit 的更新版本(~2013 年 11 月)中使用describe 。

Git.wrap(repository).describe().setTarget(ObjectId.fromString("hash")).call()

您可以解析结果,查看是否存在标签,但如果可以有多个标签,您应该使用 Marcins 解决方案。

于 2014-06-18T14:08:32.287 回答