3

刚刚安装了GitLab,它运行良好,但有一个例外:它默认将所有用户的存储库存储在一个目录中,如果两个用户独立尝试创建具有相同名称的项目,例如“test”,第二个用户将收到像“已经采取的路径”这样的失败。

隔离每个用户的存储库的基本方法是将它们放在带有用户名的子文件夹中,就像GitHub一样。但我不知道该怎么做。

我知道 GitLab 使用 Gitolite 来管理存储库,最后一个有一个应该允许它的功能:它被命名为“通配符用户”,在 gitolite.conf 中它看起来像这样:

@wildcard_users = user1 user2 user3
repo    CREATOR/.*
    C     = @wildcard_users
    CRW+D = CREATOR
    RW    = WRITERS
    R     = READERS

这样我们在 repo 路径中看到 CREATOR,它将被替换为用户名创建的存储库。但我认为我可以使用此功能的唯一方法是使用 gitolite-admin.git 存储库的克隆手动管理 gitolite,这扼杀了 GitLab 的整个想法,其中应该允许通过 Web 界面进行所有此类操作。

4

1 回答 1

2

满足该需求的确切 Gitolite 功能称为“野生回购”,它基于创建回购的用户(因此,不是GitLab

只需以用户“u4”(学生)的身份创建一个新的存储库:

$ git clone git@server:assignments/u4/a12
Initialized empty Git repository in /home/sitaram/a12/.git/
Initialized empty Git repository in /home/git/repositories/assignments/u4/a12.git/
warning: You appear to have cloned an empty repository.

注意两个空的 repo 初始化,以及它们发生的顺序;-)

GitLab 不支持该工作流程,并且需要一些大补丁来管理不直接位于repositories目录下的存储库。

于 2012-08-07T12:10:26.800 回答