有没有办法以编程方式从Java远程git存储库下载单个文件?
我能够使用SVNKit与Subversion做类似的事情,我已经看到有一个git(eclipse's JGit)的纯java实现,它可以做类似的事情,所以我希望有一个肯定的答案;虽然从我对git如何工作的理解 - 只允许从本地存储库进行更新 - 这可能会有问题。
答案 0 :(得分:9)
git并非真正设计用于从远程存储库进行单个文件访问,但您可以滥用git archive
。缺点是你必须下载一个“树”,而不仅仅是你需要的blob。
E.g。
git archive --remote=url://to.git.repo branch path/to/dir | tar -x file
作为替代方案,如果您在远程存储库上设置了gitweb,则可以使用简单的curl或wget命令以“原始”格式下载任何文件。
答案 1 :(得分:3)
您对远程存储库有什么样的访问权限?是通过SSH,你可以调用命令吗?如果是这样,您只需调用git show HEAD:$path_to_file
。
如果您无法在该计算机上调用命令,则完全可以执行此操作,但您必须了解Git存储库格式。 (这听起来不那么可怕,因为它设计非常简单。与Subversion不同,存储库格式不是黑盒子。)
答案 2 :(得分:0)
Quoth git-clone(1):
- 深度
创建一个带有历史记录的浅层克隆 截断到指定的 修订数量。浅存储库有许多 限制(你无法克隆或获取它,也不能从中推送 也不 进入它),但如果你只对它感兴趣就足够了 最近 具有悠久历史的大型项目的历史,并且希望如此 将修补程序作为补丁发送。
因此粒度是一个目录,但您可以限制修订历史记录。