我们正在考虑在一个新项目中使用 git 的两种方法:
开发人员将补丁发送给维护人员(最终可能会成为开发人员之一),他将这些补丁用于测试和集成
开发者将他们的提交推送到公共的“开发者”分支(项目的每个子模块的分支),维护者收到关于推送的邮件通知,并且可以审查\测试\集成。
最终结果是相同的——基于最新的分支,其中包含开发人员提交。
所以-我的问题是,哪个更好?我应该由一小群人在非开源项目开发人员中使用吗?(对我来说,通过邮件向坐在我旁边的那个人发送补丁听起来很奇怪)
我们正在考虑在一个新项目中使用 git 的两种方法:
开发人员将补丁发送给维护人员(最终可能会成为开发人员之一),他将这些补丁用于测试和集成
开发者将他们的提交推送到公共的“开发者”分支(项目的每个子模块的分支),维护者收到关于推送的邮件通知,并且可以审查\测试\集成。
最终结果是相同的——基于最新的分支,其中包含开发人员提交。
所以-我的问题是,哪个更好?我应该由一小群人在非开源项目开发人员中使用吗?(对我来说,通过邮件向坐在我旁边的那个人发送补丁听起来很奇怪)
为什么不提交拉取请求并处理它们呢?这就是他们对 linux 内核所做的事情。
公共共享开发者分支的主要问题是从分支中获取你不想要的东西。您不想对已发布的共享分支进行变基,并且一直还原是丑陋的。普通补丁的主要问题是同一补丁的发送者和接收者之间的 SHA 不匹配(有充分的理由)。如果我正在开发一个补丁邮件系统,我会考虑使用 git-bundles 来准确获取这些 SHA。请注意,这是一种复杂的拉动方式。
另一种选择是使用 gitolite(强制谁是和不被允许在共享分支上提交)并让开发人员在“功能”分支上工作(参见http://nvie.com/posts/a-successful-git-branching -model/和相关的 gitflow 命令),并且只让受信任的开发人员执行从功能分支到 dev/master 分支的合并。
您还可以查看 gerrit 和其他 git 代码审查工作流程。
正确的方法是分叉。这意味着开发人员克隆存储库,完成他们的工作,完成后他们会以某种方式联系项目维护者,以便他可以从外部存储库中拉出新分支。
Github 已经在它的 UI 中支持这一点。