java - JGit:我可以在不检查的情况下找出 Git 存储库中是否存在特定标签吗?

标签 java git version-control jgit

我需要用 Java 编写一段代码来测试 Git 存储库中是否存在特定标签。

最明显的方法是这样的:

git = Git.cloneRepository()
        .setURI(gitUri)
        .setDirectory(dir)
        .call();
git.checkout().setName(String.format("refs/tags/%s", version)).call();

如果标签version不存在,则会抛出异常。

但是这种方式要求我有一个目录(dir),可以在其中 check out 存储库。

是否可以在不检查磁盘的情况下找出远程存储库中是否存在标签?如果是,我该怎么做?

最佳答案

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 - JGit:我可以在不检查的情况下找出 Git 存储库中是否存在特定标签吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60417504/

相关文章:

java - Spring MVC : how to implement DAO from custom interface

java - Jtable 行删除

java - 当并非所有函数都是多态时

Git 分支仍然与 master 在同一行

git - 如何跳过 "git commit --amend"中的提交消息步骤?

java - maven 非标准版本控制导致意外的最新版本结果

java - Kotlin 1.4.30 Apache beam 编译错误

Git - 查找 repo 中的哪些应用程序已更改

android - 与 cyanogenmod repo 同步时出错

具有构建功能和源代码控制的 Asp.net 托管提供商