使用git分支的Gated提交

时间:2012-12-10 05:26:20

标签: git continuous-integration

我正在考虑为每个开发人员使用git分支设置一个门控提交工作流,如下所示:

  1. 每个开发人员都有自己的远程分支。
  2. 开发人员只会推送到他们的远程分支。
  3. C.I服务器单独构建每个分支,如果测试通过则合并为master。
  4. 开发人员通过将其分支拉到并重新定位到主服务器上来接收更改。
  5. 这是一个合理的解决方案吗?我来自颠覆,对git没有多少经验。

3 个答案:

答案 0 :(得分:3)

我认为appraoch通常是合理的。我会尽量不把分支机构视为远程'。这是颠覆变化的一部分。所有开发人员都有本地和远程(临时)区域(' origin'),用于与实际的远程存储库同步。开发人员应经常与主分支一起提交,拉动,推送和重新定位(保持最新)。

有关工作流程的更多信息:git branch, fork, fetch, merge, rebase and clone, what are the differences?

我的工作流程是:

  • 拉最新的主人
  • 制作分支
  • 做好工作
  • 将更改提交到分支
  • 获取最新的主人
  • 将master合并为分支
  • 做更多工作
  • 将更改提交到分支
  • 获取最新的主人
  • 将master合并为分支
  • 代码审核
  • 切换到主人
  • 获取最新远程版本的远程主数据
  • 将分支合并为主
  • 将主推送到远程

答案 1 :(得分:1)

根据我的个人经验,过去对我的团队最有效的工作流程是让所有开发人员共享一个远程分支。对于我的团队,我们恰好称这个分支为“主人”。我们的分支策略借鉴了本文中的想法:a-successful-git-branching-model。只需将文章中的“develop / master”分支与“master / release”交换,你就可以完成我的设置了。它是相同的,只是标记不同。

我基本上让我们所有的开发人员都承诺掌握,但只增加了提交合并的约定。所有直接编码都发生在主题分支上。对于只有一个变更集的快速修复,允许直接提交给master。但总的来说,强烈鼓励使用本地主题分支。

此外,必须立即推送所有提交给master的提交,否则差异会累积并使合并更难。通过这种方式,解决合并的负担是开发人员的责任,而不是团队领导或某些自动化软件。这是理想的情况,因为开发代码的人通常最了解自己的变化。

如果不止一个开发人员需要在单个主题分支上工作,我允许所有开发人员在特定路径下将自己的分支推送到远程(在我的情况下,它是“共享/”),以便其他人可以拉动和推送从它。

对于测试服务器(CI服务器),它会在每次测试运行时更新主服务器和分支机构。在一个新的分支上进行测试并不是绝对必要的,但是我知道某些自动脚本不能直接在master上工作,我会更加自如。

如果你来自svn,在共享分支上发生不断的微小变化可能看起来有点可怕。不要害怕,git通常非常善于解决冲突,而git mergegit pull甚至不会引发冲突。

最后,请确保经常向开发人员灌输承诺的习惯,经常拉。小增量更改实际上有助于更好地合并代码。

答案 2 :(得分:0)

使用Gerrit - 它基本上是一个内置代码审查功能的门控提交解决方案。