您如何仅使用Gitolite授权在某些目录中进行推送?

时间:2013-01-02 13:52:49

标签: git chmod gitolite

我有一个symfony项目的工作配置:

@admin = admin ku
@developer = sarhan dima_syrv sarhandom a_bobkov
@testers = novikov_d 

repo    dev
    - master = @admin @developer @testers
    RW+      =   @admin @developer
    RW+     =   jenkins ku
    RW      =   @testers

我想让测试人员组只能写入文件夹测试。 我正在做这个配置:     @admin = admin ku     @developer = sarhan dima_syrv sarhandom a_bobkov     @testers = novikov_d

repo    dev
    - master = @admin @developer @testers
    RW      =   @admin @developer
    RW+     =   jenkins
    RW      =   @testers
    RW NAME/ =  @admin
    RW NAME/src =   @admin @developer
    RW NAME/src/.*/.*/Tests   =   @testers

我有一个symfony项目的工作配置 我想让测试人员组只能写入文件夹测试 我正在做这个配置 它只给我一部分解决方案,测试人员只能在Tests文件夹中编写,但没有人能推新分支只能在旧分支中记录。如何让每个人都创建一个新的分支,而测试人员只能写入文件夹测试? 请帮帮我!

2 个答案:

答案 0 :(得分:3)

查看 VREF NAME ,这是一个更新挂钩,如果您的提交影响了回购邮件中的错误目录或文件,则会拒绝您的推送。

请参阅“restricting pushes by dir/file name”(使用gitolite版本3或“g3”)。

  

"NAME" VREF 允许您限制按名称和已更改文件的推送。
  (旁注:NAME VREF是唯一直接在更新挂钩中实现的,因此您无法在VREF目录中找到它。

     

这是一个例子。假设您不希望初级开发人员将更改推送到Makefile,因为它非常复杂:

repo foo
    RW+                             =   @senior_devs
    RW                              =   @junior_devs

    -   VREF/NAME/Makefile          =   @junior_devs
  

当高级开发人员推送时,根本不会调用VREF。但是当一个初级开发者推动时,调用VREF,并返回一个更改为refs的文件列表,如下所示:

VREF/NAME/file-1
VREF/NAME/dir-2/file-3
...etc...
  

这些引用中的每一个都与访问规则相匹配   如果其中一个恰好是Makefile,则返回的引用(VREF/NAME/Makefile)将与拒绝规则匹配并终止推送。


所以你需要进行一些实验,看看那个钩子是否支持你的确切场景,但这是Gitolite限制文件或dirnames推送的官方方式。

答案 1 :(得分:0)

简短回答:你不能这样做。 git存储库是整个内容。

唯一的解决方案是将您的测试源放在另一个存储库中(并使用子模块)。