Запросить содержимое файла репозитория из GitLab
Я хочу получить идентификатор фиксации файла readmeTest.txt
через Invantive SQL вроде так:
select * from repository_files(29, file-path, 'master')
Но чтобы это работало мне нужно project-id
, file-path
и ref
,
Я знаю мой project-id
(Я получил это от select * from projects
) и мой ref
(master
филиал), но я не знаю, где я могу найти путь к файлу, из которого я хочу получить информацию.
Итак, где я могу найти значение file-path
а также ref
?
Это мое дерево каталогов репозитория, где я вижу, что файлы существуют:
1 ответ
Вам нужно присоединиться к нескольким организациям в GitLab, чтобы получить необходимую информацию.
Поля из вашего repository_files
табличная функция и их значение:
project-id
можно найти какid
вprojects
сущность, как вы уже знали;ref-name
можно найти какname
вrepositories
;ref
это имя ветви, тега или коммита, поэтому давайте предположим, что вы хотитеmaster
теперь.
Чтобы получить эту информацию, вам потребуется следующий запрос, чтобы получить все файлы репозитория и их содержимое в проекте (сейчас я сократил его до одного проекта):
select pjt.name project_name
, rpe.name repository_name
, rpf.content file
from projects pjt
join repositories(pjt.id) rpe
on 1=1
and rpe.name like '%.%'
join repository_files(pjt.id, rpe.name, 'master') rpf
on 1=1
where pjt.id = 1