使用gitlab-ce-12.x时,Geo要求对存储路径进行散列(https://docs.gitlab.com/ee/administration/repository_storage_types.html)
因此,对于给定的存储库,数据将存储在:“@散列/#{散列[0..1]}/#{散列[2..3]}/#{散列}.git”
从实际的Angular 来看,假设我有一个存储库,其URL为
https://my-gitlab-server/Group1/project1.git
如何计算出到服务器上存储的路径?即,如何找到的值
第一个月
谢啦,谢啦
3条答案
按热度按时间erhoui1w1#
我找到问题的答案了。
为了获得项目的散列存储位置,您首先需要获得项目存储库的项目ID。
一旦你得到了这个项目id,假设你的项目id是1,你就得到了如下的哈希值:
Say project.id is 1
回声-n 1|沙256苏姆
=〉您将得到哈希值6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b
因此,存储库在服务器上的散列存储位置将是:
服务器/@散列/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.git
gitlab开发人员已经在https://gitlab.com/gitlab-org/gitlab-ce/issues/63250中讨论过这个问题
kyxcudwk2#
正如@iclman所描述的那样,从documented开始,您就可以根据项目ID的sha 256散列来计算散列存储路径。
或者使用shell函数(bash/zsh):
贝壳功能:
de90aj5v3#
相反的方向看起来更容易(告诉哪个repo属于一个已知的路径)。Gitlab在repo中存储"Gitlab路径",称为
fullpath
,例如:输出:
如果你没有太多的回购协议,你可以把它们都看一遍,然后做一个Map:
输出是一个gitlab路径-dir路径对格式的所有repos列表(除了wiki)。
例如:
ps:我现在有~150个repos,这个小脚本很快就完成了(~半秒)