如何使用JGit搜索与特定模式匹配的标签

时间:2019-07-05 07:09:15

标签: git github egit jgit

我想从Git存储库中列出与特定模式匹配的标记。我在Git Bash中找到了一种方法

$ git tag -l "proj1/1.1*"

只会返回我

proj1/1.1
proj1/1.1.1
proj1/1.1.2

但是我不知道如何使用jgit做同样的事情。 我已经尝试过以下代码从存储库中检索标签

FileRepositoryBuilder repositoryBuilder = new FileRepositoryBuilder();
repositoryBuilder.addCeilingDirectory(new File("D:\\Repo"));
repositoryBuilder.findGitDir(new File("D:\\Repo\\.git"));
Repository repo = repositoryBuilder.build();

List<String> tagList = new ArrayList<String>();
Map<String, Ref> tags = repo.getTags();
for (Map.Entry<String, Ref> entry : tags.entrySet()) {
      tagList.add(entry.getKey());
}

上面的代码向我返回了与该存储库相对应的所有标签,如下所示:

proj1/1.1
proj1/1.1.1
proj1/1.1.2
proj2/2.1
proj3/3.1

我不知道如何使用JGit过滤标签。有人可以帮我吗

1 个答案:

答案 0 :(得分:0)

repo.getRefDatabase().getRefsByPrefix("refs/tags/proj1/1.1")

JGit 5.9.0.202009080501-r。