Как получить необработанное содержимое файла из коммита репозитория с помощью gitlab api?
Мы можем получить список коммитов репозитория:
GET /projects/:id/repository/commits?path=:thefilename
Мы можем получить необработанное содержимое файла по blob id:
GET /projects/:id/repository/blobs/:sha/raw
Однако первый API не возвращает идентификатор BLOB-объекта каждой фиксации в репозитории, и нет ни одного известного API, который мог бы извлекать необработанное содержимое файла, используя вместо этого идентификатор фиксации. Мне нужно извлечь сырое содержимое файла из прошлой фиксации в репозитории, а не только из последней фиксации.
1 ответ
Это на самом деле не правда. API напрямую поддерживает получение файлов из произвольных ссылок, так как git напрямую поддерживает:
GET /projects/:id/repository/files/:file_path/raw
file_path
(обязательно) - полный путь к новому файлу в закодированном URL. Ex. Lib% 2Fclass% 2Erbref
(обязательно) - название ветви, тега или коммита
Напр.:
curl --request GET --header 'PRIVATE-TOKEN:' ' https://gitlab.example.com/api/v4/projects/13083/repository/files/app%2Fmodels%2Fkey.rb/raw?ref=master'