【问题标题】:Advice on git release management & confusion关于 git 发布管理和混淆的建议
【发布时间】:2016-11-25 23:28:50
【问题描述】:

我们是一个由 6 名开发人员组成的团队,我们已经从 TSVC(在 TFS2010 上)过渡到 git(在 Gitlab 上)将近一年了。我们采用了来自 http://nvie.com/posts/a-successful-git-branching-model 的发布模型,它正在工作,但我们有时会努力适应。

背景: 我们只为 1 个独家客户维护一个内部网络应用程序。通常我们有两种版本:

  • 次要:错误修复和小更改请求
  • major:通常需要数月才能交付的重大变更请求

只有在客户批准后才能将这两种类型的版本部署到生产环境中。

我们有 4 种类型的分支,masterreleasedevelop 和主题分支。一旦一个版本准备好发布,我们就会从master 分支出一个新版本。对于 CR,我们最初从 develop 分支,但后来我们发现它非常多余,因此我们现在从 master 分支。主题分支是错误修复和小 CR,它是来自正在进行的 releasemaster 分支的分支。当我们将足够多的 bugfix 合并到 release 分支中时,或者当需要发布紧急 bugfix 时,我们将准备好该release 分支出去,并启动一个新的release 分支。我们通常在固定的工作日每两周或每月发布一次。我们还通过在每次发布时将次要 release 分支合并到主要 release 分支来更新它。

我们使用 Gitlab 的 CI 在每次推送时构建我们的包,我们会将最后构建的包部署到我们的测试环境中,以供我们的测试团队进行测试。当release 分支稳定后,最终包通过测试并获得客户端批准发布,然后将同一包用于生产部署。

以下是我们的一些困惑。

  1. 由于我们总是从release 分支的尖端进行部署,我们认为没有必要将其合并回master。将release 合并到master 的提交不是已部署的提交。如果我们要使用最终的合并提交,那么我们将不得不再次经历测试周期,这似乎是多余的。我们还应该保留master吗?
  2. develop 分支似乎也不适合我们的工作流程,我们是否也应该放弃它?

最后,似乎对我们有用的是只有次要和主要的 release 分支,但我们想知道这是推荐的方式还是我们可以遵循更好的发布模型。

【问题讨论】:

  • “将发布合并到 master 的提交不是部署的那个。” 如果这是真的,那么您的流程就会有些混乱,因为所有到 master 的合并都应该快进,所以它们应该是相同的提交哈希。
  • @JeffPuckettII 对,它不是同一个提交哈希。所以这是我们应该关注的地方,谢谢

标签: git version-control git-branch branching-and-merging


【解决方案1】:

我们的开发类型与您相同。

对我们来说,Dymitruk 的分支模型http://dymitruk.com/blog/2012/02/05/branch-per-feature 是完美的。简而言之,它取消了developmentrelease 分支,仅使用masterfeatureXXXqa(预发布测试)和ci(持续集成)分支,最后一个是更具技术性且完全可选。

该系统严重依赖git rebasegit rerere,因此仅适用于git(我不知道其他VCS 是否有类似rerere 的东西),并且非常干净和强大。

【讨论】:

  • 感谢回复,这个模型很有意思,我去看看。
  • 刚刚有机会验证这一点,它对我们有用,再次感谢
猜你喜欢
  • 1970-01-01
  • 2021-08-14
  • 1970-01-01
  • 2018-05-24
  • 2010-11-05
  • 1970-01-01
  • 1970-01-01
  • 2013-12-31
  • 2012-06-15
相关资源
最近更新 更多