- Published on
获取gitlab仓库的文件存储路径
- Authors
- Name
- JiGu
- @crypto20x
序
现有一个需求,从gitlab的文件系统,读取git的提交信息。但gitlab文件路径做了hash,文件系统的路径名称跟仓库名称不一致,无法直接获取仓库的路径。
hash路径存储规则
# Project's repository:
"@hashed/#{hash[0..1]}/#{hash[2..3]}/#{hash}.git"
# Wiki's repository:
"@hashed/#{hash[0..1]}/#{hash[2..3]}/#{hash}.wiki.git"
gitlab的hash路径生成规则是SHA256(project.id),将projectId做SHA256,得到哈希前两位做为第一级目录,第三第四位作为第二级目录,最后就是完整的hash拼上.git作为目录。
现在已经得到了git仓库的真实文件系统路径了,可以cat下${hash}.git下面的config, 可以看到fullpath,就是仓库的hash前的地址。
获取ProjectId
1. 通过gitlab api
具体就不说了,每种语言有对应的api
2. 直接上仓库的页面
直接curl上仓库的页面,HTML里面就有projectID,这应该是最暴力和最简单的方法了。
<input type="hidden" name="project_id" id="project_id" value="335" />
例子Example
echo -n $projectId | sha256sum