我知道可以提取然后使用带有/ to / file路径的checkout下载该特定文件。
我的问题是我每天有1 MB的数据上限,并且git fetch无论如何都将下载所有数据,即使它直到使用git checkout才将它们保存到磁盘上。我仍然使用我的数据
我是否了解git fetch / checkout的正确性?在继续下载之前,有没有办法下载特定文件,以仅查看是否有新版本。
答案 0 :(得分:2)
Gitlab为此提供了一个REST API。
您可以使用curl从存储库中获取文件:
curl https://gitlab.com/api/v4/projects/:id/repository/files/:filename\?ref\=:ref
例如:
curl https://gitlab.com/api/v4/projects/12949323/repository/files/.gitignore\?ref\=master
如果您的存储库不公开,则还需要通过添加--header 'Private-Token: <your_access_token>'
来提供访问令牌。
您可以检查如何找到存储库api ID here。
还有一个python library使用此api。
请注意,这是GitLab特定的解决方案,不适用于其他主机。
答案 1 :(得分:1)
为了扩展另一个答案,(现在?我不知道何时添加了此功能)可以只获取原始文件而不是具有文件 base64 编码的 json。
端点:GET /projects/:id/repository/files/:file_path/raw
示例:
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/13083/repository/files/path%2Fto%2Ffile%2Efoo/raw?ref=master"
请注意,在示例中,文件的完整路径是 URL 编码的,指向 path/to/file.foo