我想获得一个存储库的所有标签列表以及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检索标记列表时,轻量级和带注释的标记之间是否存在差异?
答案 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
}