Gitolite 权限仅限于一个分支

exe*_*exe 5 git branch gitolite git-branch

我对gitolite权限有点困惑。

仅允许 1 个分支并拒绝特定用户或组的所有其他分支的最佳方法是什么?

Von*_*onC 3

请参阅“部分复制:分支的选择性读取控制

要点是:

Git(因此 gitolite)无法进行选择性读取控制 - 允许某人读取分支A而不是分支B
要么是整个仓库,要么什么都没有

Gerrit Code Review可以做到这一点,但那是因为他们有自己的 git (以及他们自己的 sshd 等)。如果代码审查是您访问控制决策的一部分,那么无论如何您确实应该考虑 Gerrit。

当您询问时得到的标准答案是“使用单独的存储库”(其中一个包含所有分支,一个包含分支的子集)。
这在理论上很好,但在实践中,当人们可能同时推送两个存储库时,您需要弄清楚如何使它们保持同步。

Gitolite 现在可以帮助您做到这一点。请注意,这仅适用于分支机构;您不能对文件和目录执行此操作。

就是这样:

  • 在 rc 文件的列表中启用“ partial-copy” 。ENABLE

  • 对于每个foo具有秘密分支的存储库“”,某些开发人员(我们将使用名为的组@temp-emp作为示例)不应该看到这些分支,请执行以下操作:

     repo foo
         # rules should allow @temp-emp NO ACCESS
    
     repo foo-partialcopy-1
         -   secret-branch               =   @temp-emp
    
         # other rules; see notes below
    
         -   VREF/partial-copy           =   @all
         config gitolite.partialCopyOf   =   foo
    
    Run Code Online (Sandbox Code Playgroud)

重要笔记:

  • 如果您使用其他 VREF,请确保将其放在最后,在所有其他 VREF 之后。
  • 请记住,允许对部分复制存储库进行的任何更改都将传播到主存储库,因此请确保根据需要使用其他规则来限制对其他分支和标签的推送。