不克隆 git 远程仓库的情况下列出其分支列表

8
我想知道如何使用jgit列出远程Git存储库的所有分支,但不需要克隆它。 在查看jgit的javadoc时,我发现ListBranchCommand,但似乎只适用于已打开的Repository对象。但我找不到如何通过HTTP创建Repository对象而不将其克隆到本地。 这可能吗? 谢谢
2个回答

5

好的,没关系,在寻找答案多个小时之后,我在询问之前找到了它...

所以,答案在CookBook中:

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

5

有一个 LsRemoteCommand 命令可以列出远程代码库的分支。要获取该命令,请使用以下任一方法:

Git.wrap(repo).lsRemote()

或者

Git.lsRemoteRepository()

静态创建的 LsRemoteCommand 有其局限性。对于某些传输协议,需要本地存储库来获取配置设置。因此,我通常使用 Git.init() 创建一个空的临时本地存储库,然后使用第一种方法。
如果你想避免创建额外的存储库,可以通过 Transport.open() 进行测试,看它是否能够在没有存储库的情况下成功。否则,它会抛出 NotSupportedException 异常。

将 repo 克隆到本地,当远程 repo 很大时,是否会出现问题? - Augier
@user3459089:无需克隆远程存储库。只需要一个空的本地存储库(可以使用Git.init()创建)即可使某些传输协议正常工作。 - Rüdiger Herrmann
好的,谢谢你的答案。我必须承认,我从来没有以这种方式进行过研究,因为对我来说,克隆存储库来执行这些命令似乎是很合理的做法。 - Augier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接