列出一个git远程仓库的分支而不克隆它

时间:2014-03-25 10:08:22

标签: java jgit

我想知道怎么可能用jgit列出远程Git仓库的所有分支但没有克隆它。

在浏览jgit的javadoc时,我找到了ListBranchCommand,但这似乎只适用于已打开的Repository对象。但我无法找到如何通过HTTP创建Repository对象而无需在本地克隆它。

有可能吗? 感谢

2 个答案:

答案 0 :(得分:4)

LsRemoteCommand列出远程存储库的分支。要获取该命令,请使用

Git.wrap( repo ).lsRemote()

Git.lsRemoteRepository()

静态创建的LsRemoteCommand有其局限性。对于某些传输协议,需要本地存储库来获取配置设置。因此,我通常使用Git.init()创建一个空的临时本地存储库,然后使用第一种方法。

如果您想避免创建额外的存储库,可以使用Transport.open()进行测试,如果它没有存储库则成功。否则会抛出NotSupportedException

答案 1 :(得分:2)

好的,没关系,经过几个小时寻找答案后,我才发现它在那之前就问了......

所以,答案在CookBook

Collection<Ref> refs = Git.lsRemoteRepository()
            .setHeads(true)
            .setTags(true)
            .setRemote(REMOTE_URL)
            .call();