4

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

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

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

谢谢你

4

4 回答 4

1

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

请参阅“匹配 ref 和 refex ”(gitolite 3.x)

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

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

RW              =   alice

不以refs/(or VREF/) 开头的 refex 被假定为以refs/heads/.
这意味着普通分支可以方便地写成这样:

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

而标签需要完全限定:

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

因此,默认情况下,您不能推送标签,除非有明确的refs/tag/规则允许您的用户或用户组使用它。

于 2010-07-07T19:43:51.573 回答
1

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

您定义组,然后设置存储库权限,包括谁可以在分支中推送审查、谁可以将更改直接推送到分支、谁可以推送(各种类型的)标签,甚至谁可以查看/推送到您的绝密分支.

我们的 gerrit 实例是向全世界开放的,尽管我们确实限制了谁可以推动什么和在哪里(并且在某些项目上有一些合作者可以比其他人做得更多)。

于 2010-07-07T20:35:25.043 回答
1

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

于 2010-07-08T07:25:13.407 回答
0

通过阅读文档和个人经验,我了解到 Git 并非旨在以这种方式使用。您所描述的内容可以通过多存储库场景轻松处理,在该场景中,较少的开发人员推送到开发存储库,高级开发人员从中提取更改、合并、测试等......然后部署到生产存储库,任何开发者可以拉。

于 2010-07-07T20:37:37.143 回答