Как получить необработанное содержимое файла из коммита репозитория с помощью 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% 2Erb
  • ref (обязательно) - название ветви, тега или коммита

Напр.:

curl --request GET --header 'PRIVATE-TOKEN:' ' https://gitlab.example.com/api/v4/projects/13083/repository/files/app%2Fmodels%2Fkey.rb/raw?ref=master'

Подробнее на Получить сырой файл из хранилища

Другие вопросы по тегам