JGit:我可以在不检查的情况下找出某个特定标签是否存在于 Git 存储库中吗?
JGit: Can I find out whether or not a particular tag exists in a Git repository without checking it out?
我需要在 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()
.
执行命令
我需要在 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()
.