我需要用Java编写一段代码来测试Git存储库中是否存在特定标签。
最明显的方法是:
git = Git.cloneRepository()
.setURI(gitUri)
.setDirectory(dir)
.call();
git.checkout().setName(String.format("refs/tags/%s", version)).call();
如果标签version
不存在,将引发异常。
但是这种方式要求我有一个目录(dir
),存储库将被检入其中。
是否有可能在不将标签签出到磁盘的情况下找出标签在远程存储库中是否存在?如果是,我该怎么办?
LsRemoteCommand
可以列出远程存储库具有的引用。
该命令可以配置为包括如下标签:
LsRemoteCommand ls = Git.lsRemoteRepository();
Collection<Ref> remoteRefs = ls
.setRemote("url-to-remote-repo")
.setHeads(true) // true by default, set to false if not interested in refs/heads/*
.setTags(true) // include tags in result
.call();
如果您希望获得引用名称到Ref
对象的映射,则可以使用callAsMap()
执行命令。