我熟悉使用标签引用来获取 Ref,然后开始做某事:
Ref ref = repository.getRef("refs/tags/jena-2.11.2");
但是,如果将 ref 传递给我,并且我想取回“refs/tags/jena-2.11.2”字符串,我该如何使用 JGit API 来实现呢?
RevWalk walk = new RevWalk(repository);
RevObject object;
try {
object = walk.parseAny(ref.getObjectId());
} catch (MissingObjectException e) {
.....
} catch (IOException e) {
.....
}
if (object instanceof RevTag) {
// String tagName = object.what?????????
} else if (object instanceof RevCommit) {
...
} else {
...
}
最佳答案
提交不知道可能指向它的标签。因此,没有 object.getRefs()
或类似的东西。
如果您知道应该有一个标记指向给定的提交,则可以使用 ListTagCommand
获取所有标记的列表,然后迭代此列表,直到找到指向的标记到此提交。
NameRevCommand
遵循更通用的方法。与 git name-rev 类似,它查找给定提交的符号名称。
按照您的示例,此代码段将打印提交的标签名称:
Map<ObjectId,String> names = git.nameRev().add( object ).addPrefix( "refs/tags/" ).call();
System.out( names.get( object ) );
如果多个引用指向object
,addPrefix
可确保标签优先于其他引用。
关于java - 如何使用 JGit API 获取 git 标签的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28897658/