没有命名空间的 Gitlab 克隆 URL?

Gitlab clone URL without namespace?

从 gitolite 迁移到 gitlab 时,我们发现 gitlab 不支持以下形式的克隆 URLs:

gitlab.example.com:<my-repository>.git

相反,它需要一个命名空间(组、用户名或子组),如下所示:

gitlab.example.com:<namespace>/<my-repository>.git

不幸的是,这会破坏多个构建脚本。 是否可以用其他方式做到这一点?

我已经尝试创建一个带有空白命名空间的组,但这是被禁止的。

我们预期的行为是在 URL 中不使用命名空间进行克隆,例如

git clone gitlab.example.com:<my-project>.git

考虑到 GitLab groups 的性质,您需要 将您的存储库放入一个专门的组中,比如“global”。

gitlab.example.com:global/<my-repository>.git

但是:您还可以通过名为“globalGitLab”的专用 SSH URL 引用这些存储库,并使用 ~/.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 的期望兼容!