我希望通过Invantive SQL检索文件readmeTest.txt
的提交ID,如下所示:
select * from repository_files(29, file-path, 'master')
但为了实现这一目标,我需要project-id
,file-path
和ref
。
我知道我的project-id
(我是从select * from projects
获得的)和我的ref
(master
分支),但我不知道在哪里可以找到通往我要检索的文件的信息。
那么我在哪里可以找到file-path
和ref
的价值?
这是我的存储库目录树,我可以在其中看到存在的文件:
答案 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