Запросить содержимое файла репозитория из 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
Другие вопросы по тегам