我已经通过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)。
答案 0 :(得分:0)
clonedRepository
没有指向我想要的存储库路径(本地克隆的路径)。以下代码行解决了这个问题:
Git git = clone.call();
clonedRepository = git.getRepository();
从这个意义上讲,clonedRepository
指向包含项目所有标记的.git
。然后我可以通过执行
tagsMap = clonedRepository.getTags();
tagsMap
变量的类型为Map <String, Ref>
(参见reference)。