使用JGit的现有存储库的空标记列表

时间:2015-11-18 15:03:04

标签: java git jgit

我已经通过CloneCommand JGit克隆了一个git存储库,现在我正在尝试获取我要签出的标记列表。但是当我执行

Git git = Git.wrap(clonedRepository);
List<Ref> tagsList = git.tagList().call();

然后是tagsList.size(),它会返回0。克隆的存储库已设置为true以克隆所有分支,并且未进行裸克隆。当我检查路径.git中的refs/tags/文件夹时,我找到了需要结帐的所有标签。

在这里,我添加了有关如何克隆远程存储库的更多详细信息:

File path = new File(localPath);
path.delete();

FileRepositoryBuilder builder = new FileRepositoryBuilder();
clonedRepository = builder.setGitDir(path).readEnvironment().findGitDir().build();

CloneCommand clone = Git.cloneRepository();

clone.setBare(false);
clone.setCloneAllBranches(true);
clone.setDirectory(path).setURI(remotePath);
clone.setCredentialsProvider(new UsernamePasswordCredentialsProvider(username, password));
clone.call();

localPath = "./target/ClonedRepository"remotePath是我的git地址(http)。

1 个答案:

答案 0 :(得分:0)

clonedRepository没有指向我想要的存储库路径(本地克隆的路径)。以下代码行解决了这个问题:

Git git = clone.call();
clonedRepository = git.getRepository();

从这个意义上讲,clonedRepository指向包含项目所有标记的.git。然后我可以通过执行

来获取这些标签的地图
tagsMap = clonedRepository.getTags();

tagsMap变量的类型为Map <String, Ref>(参见reference)。