gpt4 book ai didi

eclipse - 使用 JGit 获取标签消息

转载 作者:行者123 更新时间:2023-12-02 16:49:25 27 4
gpt4 key购买 nike

我需要每次提交时获取关联标签的名称和消息。

我设法获取与我的提交关联的标签名称。但我收不到消息。我尝试过这样的:

String nameTag = "";

List<Ref> call = new Git(git.getRepository()).tagList().call(); // get all tags from repository

for (Ref ref: call) {
if ((ref.getObjectId().getName()).equals(commit.getName())) {
Map<ObjectId, String> names = git.nameRev().add(ref.getObjectId()).addPrefix("refs/tags/").call();
nameTag = names.get(ref.getObjectId());
System.out.println("Commit " + commit.getName() + "has tag" + nameTag);
}
}

我尝试为找到的每个引用创建 RevTag:

AnyObjectId obj = ref.getObjectId();
if(obj instanceof RevTag) {
RevTag tag = walk.parseTag(obj);
System.out.println(tag.getFullMessage());
}

但返回的对象 ID 绝不是 RevTag。异常消息是:

Object ... is not a tag . 

如何创建解析 Ref 的 RevTag?

最佳答案

您不必使用 RevWalk#parseTag() 解析标签。该方法仅用于解析带注释的标签。

要区分另一个,您甚至可以使用 parseTag (或者有更好的方法吗?)

RevTag tag;
try {
tag = revWalk.parseTag(ref.getObjectId());
// ref points to an annotated tag
} catch(IncorrectObjectTypeException notAnAnnotatedTag) {
// ref is a lightweight (aka unannotated) tag
}

带注释的标记指向提交对象,因此具有作者、日期、消息等,而提交对象又指向带标记的提交。

轻量级标签直接引用标记的提交(很像分支,但只读),因此不能有消息。

有关带注释与轻量级标签的更多信息:

关于eclipse - 使用 JGit 获取标签消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29892210/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com