使用JGit获取存储库的所有标记

时间:2013-02-16 18:48:39

标签: java tags jgit

我想获得一个存储库的所有标签列表以及tagger和带有JGit的commit-IDs。

首先,我尝试了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检索标记列表时,轻量级和带注释的标记之间是否存在差异?

1 个答案:

答案 0 :(得分:6)

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

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

RevObject object = walk.parseAny(objectIdOfTag);
if (object instanceof RevTag) {
    // annotated
} else if (object instanceof RevCommit) {
    // lightweight
} else {
    // invalid
}