Git拒绝用户创建标签

时间:2010-07-07 19:33:49

标签: git rights-management

这是关于git repo管理的问题......

是否可以配置git repo以仅为某些用户创建TAG? 和分支类似的问题:是否可以配置能够修改特定分支的用户列表?

所有这些配置的想法是:与许多开发人员有git repo,我们希望有一些稳定的分支和标签列表。只有高级开发人员才能修改这些分支并创建标签。 所有其他开发人员仍然可以创建分支等。但如果开发商想要将其变更推广到其中一个稳定的分支机构,他必须联系高级人员要求他进行合并......

谢谢

4 个答案:

答案 0 :(得分:1)

对于分支和带注释的标签(即可以推/拉的版本化标签), gitolite 可以提供这种访问控制。

参见“matching a ref and a refex”(gitolite 3.x)

这种工具可以保护“中央”存储库:如果你有正确的凭据,你可以克隆它们并用你的本地副本做你想做的事,但是只要你想要推回,gitolite就会控制与该远程仓库关联的权限。

  

如果没有提供refex,则默认为refs/.*,例如在以下规则中:

RW              =   alice
  

假设不以refs/(或VREF/)开头的退货以refs/heads/开头。
  这意味着可以方便地编写普通分支:

RW  master      =   alice
# becomes 'refs/heads/master' internally
  

虽然标签需要完全合格:

RW  refs/tags/v[0-9]    =   bob

因此,默认情况下,您无法推送代码,除非有明确的refs/tag/规则允许您的用户或用户组。

答案 1 :(得分:1)

Gerrit(主要是代码审查系统)几乎完全按照您的描述解决了这个问题。

您可以定义组,然后为可以在分支中推送审阅的人设置存储库权限,谁可以将更改直接推送到分支,谁可以推送标签(各种类型)甚至谁可以看到/推送到您的顶部 - 秘密分支。

{p> Our gerrit instance对全世界开放,虽然我们确实限制谁可以推动什么地方和哪里(并且在某些项目上有一些合作者可以比其他人做得更多)。

答案 2 :(得分:0)

通过阅读文档和个人经验,我的理解是Git不是以这种方式使用的。您所描述的内容可以通过多个存储库方案轻松处理,其中较小的开发人员推送到开发存储库,高级开发人员从中进行更改,合并,测试等...然后部署到生产仓库中开发商可以拉。

答案 3 :(得分:0)

您可以使用.git / refs / heads和.git / refs / tags上的标准文件访问规则来限制访问。例如,如果你制作.git / refs / tags模式775,那么只有拥有.git / refs / tags的组的成员才能制作标签。类似地,您可以限制对.git / refs / heads / foo的读取权限,以便只有具有读访问权限的人才能检出分支foo,只有那些对.git / refs / heads具有写访问权限的人才能创建新的分支机构。但是,这是一种不可靠的技术,使用具有适当访问权限的不同存储库会更好。