如何使用 gitlab api 从存储库提交中检索原始文件内容?
How to retrieve raw file content from a repository commit with gitlab api?
我们可以通过以下方式获取存储库提交列表:
GET /projects/:id/repository/commits?path=:thefilename
我们可以通过 blob id 获取原始文件内容:
GET /projects/:id/repository/blobs/:sha/raw
但是,第一个 api 没有 return 每个存储库提交的 blob id,并且没有已知的 api 可以使用提交 id 检索原始文件内容。我需要从过去的存储库提交中检索原始文件内容,而不仅仅是最新的提交。
事实并非如此。 API 直接支持从任意引用获取文件,因为 git 直接支持:
GET /projects/:id/repository/files/:file_path/raw
file_path
(required) - Url encoded full path to new file. Ex. lib%2Fclass%2Erb
ref
(required) - The name of branch, tag or commit
例如:
curl --request GET --header 'PRIVATE-TOKEN: ' 'https://gitlab.example.com/api/v4/projects/13083/repository/files/app%2Fmodels%2Fkey%2Erb/raw?ref=master'
我们可以通过以下方式获取存储库提交列表:
GET /projects/:id/repository/commits?path=:thefilename
我们可以通过 blob id 获取原始文件内容:
GET /projects/:id/repository/blobs/:sha/raw
但是,第一个 api 没有 return 每个存储库提交的 blob id,并且没有已知的 api 可以使用提交 id 检索原始文件内容。我需要从过去的存储库提交中检索原始文件内容,而不仅仅是最新的提交。
事实并非如此。 API 直接支持从任意引用获取文件,因为 git 直接支持:
GET /projects/:id/repository/files/:file_path/raw
file_path
(required) - Url encoded full path to new file. Ex. lib%2Fclass%2Erbref
(required) - The name of branch, tag or commit
例如:
curl --request GET --header 'PRIVATE-TOKEN: ' 'https://gitlab.example.com/api/v4/projects/13083/repository/files/app%2Fmodels%2Fkey%2Erb/raw?ref=master'