从GitLab查询存储库文件内容

时间:2016-10-14 11:46:25

标签: sql gitlab invantive-sql

我希望通过Invantive SQL检索文件readmeTest.txt的提交ID,如下所示:

select * from repository_files(29, file-path, 'master') 

但为了实现这一目标,我需要project-idfile-pathref

我知道我的project-id(我是从select * from projects获得的)和我的refmaster分支),但我不知道在哪里可以找到通往我要检索的文件的信息。

那么我在哪里可以找到file-pathref的价值?

这是我的存储库目录树,我可以在其中看到存在的文件:

Directory tree

Directory tree

1 个答案:

答案 0 :(得分: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