2010-07-07 86 views
4

这是一个关于git仓库管理的问题...的Git拒绝用户创建标签

是否有可能配置混帐回购协议,允许标签创建只对某些用户? 分支的类似问题:是否可以配置用户的列表,谁可以修改特定的分支?

所有这些配置的想法是:有许多开发人员的git回购,我们想要有一些稳定的分支和标签列表。只有高级开发人员才能修改这些分支并创建标签。 所有其他开发者仍然可以创建分支机构等。但是,如果开发者想宣传他的变化稳定分支,他必须联系资深人士,请他做一个合并...

谢谢

+0

还有一件事 - 想象该项目是由sourceforge.net托管 - 所以它是开源的,并有许多开发人员 - 这是有道理的,允许标签创建仅用于管理员... – user349302 2010-07-07 20:41:17

回答

1

对于分支机构和注释标签(即版本标签,可以被推/拉),gitolite可以提供那种访问控制。

请参阅“matching a ref and a refex”(gitolite 3.X)

这种工具允许的“中央”仓库保护:如果你有正确的凭据,您可以复制它们,你想要做什么你本地副本,但只要你想推回来,gitolite将控制与该远程回购相关的权限。

如果没有refex被提供,则默认为refs/.*,例如在规则是这样的:

RW              =   alice 

甲refex不开始refs/(或VREF/)被假定为开始与refs/heads/
这意味着正常的分支可以方便地写成这样:

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

而标签将需要完全限定:

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

所以默认情况下,不能推送标签,除非有一个明确的refs/tag/规则允许您的用户或组p的用户。

+0

在同一时间的网站:( – v01pe 2013-10-11 08:51:32

+1

@ v01pe我已恢复链接并添加了一个示例。 – VonC 2013-10-11 12:10:48

1

Gerrit(主要是代码审查系统)几乎完全为你描述它解决了这个问题。

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

Our gerrit instance向全世界开放,虽然我们限制谁可以推动什么和在哪里(并且在一些能够做得比别人做得更多的项目上有一些合作者)。

0

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

0

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