2013-02-16 26 views
4

我想用恶搞和提交-ID与同JGit扎堆的存储库的所有标签的列表。获取存储库的所有标签与JGit

首先,我尝试了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检索标签列表时,轻量级和带注释的标签有区别吗?

回答

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 
} 
+0

谢谢,这信息对我来说非常有帮助。 – Sonson123 2013-02-18 11:36:03

+0

不客气!顺便说一下,在这种情况下查看EGit如何使用JGit API可能会有所帮助,请参阅[EGit撰稿人指南](http://wiki.eclipse.org/EGit/Contributor_Guide)获取安装说明。 – robinst 2013-02-18 11:57:21

+0

最后一个问题:我可以用'ListTagCommand'获得一个* lightweight *标签的名称(对于'RevTag',我可以使用'revTag.getTagName()'。)? (或者我应该创建自己的'RevWalk'来获取所有标签?) – Sonson123 2013-02-18 14:09:25