2

我们目前在做一个非开源项目,团队大约 50 人,平均每天提交 20-30 次。由于其中一些人是初级开发人员,我们必须实现一个不允许所有人都提交到我们的主存储库的系统。

到目前为止,我们使用的是具有这种结构的 SVN:

  • trunk - 包含所有开发人员代码
  • 分支 - 包含所有经过验证的代码

有时,一位资深开发人员“进入”主干并将其与分支合并,拒绝所有未批准的代码(当有大量未批准的代码要恢复时,这会变得很疯狂)。最后,当主干只有批准的代码时,两者之间会完全合并。

最近我们开始用 Git 和 GitLab 进行一些测试,看看 Git 审批系统是否值得从 SVN 迁移,以缓解所有这些疯狂的合并。

起初它看起来很有希望,但过了一段时间我们得出了一个令人失望的结论,即没有神奇的公式。我们创建了一个受保护的主分支,只有高级开发人员才能访问将更改推送到其中,但随后出现了有问题的部分……初级开发人员。

也许是因为我们太习惯了 SVN 的方式,我们找到的唯一解决方案是创建一个“初级分支”,但这基本上会模仿我们已经使用 SVN 的行为(和令人头疼的问题)。

请告诉我我们遗漏了什么,或者我们是否以错误的方式处理问题。

编辑 当我说批准的代码时,我指的是对所有类结构的验证、正确的对象实例化......而不是换行符、制表符(和类似的)是否正确。

4

1 回答 1

0

当 GitLab 使用 Gitolite 时,这种策略很容易设置,因为 VREF

您可以将更新挂钩与 gitolite 规则相关联,该规则可以为称为“初级”的一组用户(GitLab 中的团队)定义,并执行您想要的任何策略。

但从 GitLab 5.x 开始,gitolite 不再使用,gitlab-shell而是管理权限。
希望问题 14将得到解决。
同时,您需要自己实施和部署更新挂钩,以便为初级开发人员推送到特定分支执行策略。

正如所评论的,另一种方法是:

  • 不将所说的初级开发人员添加到项目中
  • fork(在服务器上克隆)项目:该功能正在为 GitLab V5(问题 3382)开发
  • 现在提出一个拉取请求(称为“合并请求”)。

考虑到 GitLab 的当前开发状态​​,Git 管理软件还没有准备好提供您需要的一切。

将这些 repos(主要的,以及面向初级开发人员的)与像Gerrit这样的审查系统结合起来可能是一种更明智的方法(这里是对这种组合的一个有趣的批评)。

于 2013-04-15T15:43:14.430 回答