【发布时间】:2012-11-19 16:18:28
【问题描述】:
我们是一个由 60 多名开发人员组成的团队,致力于同一产品,并且正在从 SVN 迁移到 Git 和 GitHub。我们在 SVN 中有一个进程,其中单个文件被锁定,每当开发人员想要提交代码时,他需要让文件所有者解锁它。我们三个人是总共 150 多个文件的所有者。解锁之前是代码审查。
在 Github 中,我们计划使用 Fork-Clone 模型 - 一组开发人员正在处理的每个项目都会进行一次 fork,每个开发人员将进行一次 fork 的克隆,编写代码并提交到 origin,该功能的负责人将向上游发出拉取请求。
虽然这看起来不错,但问题是,当一个大项目交付时,它会带来很多需要审核的更改,因此会增加文件所有者的负担。此外,这可能会发生在后期的开发周期中,因此项目可能会受到威胁。
我们认为可能有效的一种方法是在 git push 完成到源(fork)时使用钩子。可以有一个最终审查 git pull 到上游。
但是,我们找不到任何 github 扩展或相同的推送挂钩。有没有一种快速的方法(阅读,现有的扩展)可以用 Github 来做这件事,还是我们应该使用与 git 相同的钩子?
【问题讨论】:
-
我不觉得文件锁定是 Git 缺少的东西(这在 SVN 中很烦人)。在大多数情况下,我很确定拉取请求和分支是适合您的方式。您甚至可以使用子模块将项目的不同部分分隔在不同的 repo 中,然后在团队之间进行更清晰的分隔(文件保护)。因此,文件所有者将成为主要子模块的所有者,并且他会修改他的团队在其主分支上提出的每个拉取请求。然后每个用户都有自己的分叉。
-
@SimonBoudrias 如果将 git 用于不存在合并工具的任何文档类型(几乎总是如此),那么您的想法完全不起作用。使用 TortiseSVN/WebSVN 我们可以避免 MS Exchange,但使用 git 我们不能。在我看来,这是 git 的一个非常不幸的后备。
-
这不是技术问题;这是一个过程问题。为什么你需要 60 个开发人员来处理 150 个文件?似乎问题从那里开始。你使用什么编程语言?您的 150 个文件可能应该是 1500 个文件,然后您可以将其划分为模块。然后将您的开发“团队”(60 人,这不是一个团队,它是一个小村庄)拆分为由 7 人组成的更小的单元,这些人实际上可以作为一个团队发挥作用,并赋予他们对模块的所有权。这样,您和您的 2 位同事看门人将不再是瓶颈,每个人都会更快乐。而且你不需要锁。
标签: git github githooks github-api