5

我想使用 JGit 获取存储库的所有标记以及标记器和提交 ID 的列表。

首先我尝试了Git.tagList().call()命令并解析标签:

objectIdOfTag = oneResultOfTheTagList.getObjectId(); 
// or should I call getPeeledObjectId() here?

RevWalk walk = new RevWalk(repository);
RevTag tag = walk.parseTag(objectIdOfTag);

这适用于我的存储库,但我不确定这是否是正确的方法:调用是正确的Ref.getObjectId()还是应该调用Ref.getPeeledObjectId()?(什么是“剥离的ObjectId”?)

使用 JGit 检索标签列表时,轻量级和带注释的标签有区别吗?

4

1 回答 1

7

getObjectId在这里是正确的。对于带注释的标签,您想要获取带注释的标签对象的 ID,而不是标签最终指向的提交的 ID。另请参阅Ref 的 Javadoc

要解析标签,您必须同时处理轻量级和带注释的情况:

RevObject object = walk.parseAny(objectIdOfTag);
if (object instanceof RevTag) {
    // annotated
} else if (object instanceof RevCommit) {
    // lightweight
} else {
    // invalid
}
于 2013-02-18T10:11:04.933 回答