从gitolite迁移到gitlab时,我们发现gitlab不支持以下形式的克隆URL:
gitlab.example.com:<my-repository>.git
相反,它需要一个名称空间(组,用户名或子组),如下所示:
gitlab.example.com:<namespace>/<my-repository>.git
不幸的是,这会破坏多个构建脚本。 可以用另一种方式吗?
我已经尝试用空白的命名空间创建一个组,但是这是被禁止的。
我们的预期行为是在URL中没有名称空间的情况下进行克隆,例如
git clone gitlab.example.com:<my-project>.git
答案 0 :(得分:1)
考虑到GitLab groups的性质,您需要将回购协议放入一个专门的小组,例如“ global
”。
gitlab.example.com:global/<my-repository>.git
但是:您还可以通过专用的SSH URL(名为“ globalGitLab
”来引用那些存储库,其中有一个~/.ssh/config
文件,并用右键将globalGitLab
转换为git@gitlab.example.com
。
Host globalGitLab
HostName gitlab.example.com
User git
IdentityFile /path/to/right/id_rsa
仅此一项不能解决您的小组问题:globalGitLab:myrepo.git
不起作用。
但是,您可以也设置全局Git配置:
git config --global url."globalGitLab:global/".insteadOf globalGitLab:
(请参阅“ git config url.<base>.insteadOf
”)
这会将所有globalGitLab:myrepo
(从您的脚本中)转换为globalGitLab:global/myrepo
,这与GitLab期望的兼容!