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

Aug*_*ier 7 java jgit

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

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

可能吗 ?谢谢

Aug*_*ier 5

好吧,没关系,经过几个小时的寻找答案,我在问它之前就找到了它......

所以,答案就在CookBook中:

Collection<Ref> refs = Git.lsRemoteRepository()
            .setHeads(true)
            .setTags(true)
            .setRemote(REMOTE_URL)
            .call();
Run Code Online (Sandbox Code Playgroud)


Rüd*_*ann 5

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

Git.wrap(repo).lsRemote()
Run Code Online (Sandbox Code Playgroud)

或者

Git.lsRemoteRepository()
Run Code Online (Sandbox Code Playgroud)

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

如果您想避免创建额外的存储库,您可以在没有存储库的情况下测试Transport.open()是否成功。它抛出一个NotSupportedException否则。