2016-05-30 80 views
1

客户有一个要求,即每日生产部署和一天前安排的功能。我想介绍代码评论,但我不确定要开始。搭配日常生产部署的Git

他们使用Git作为SCM。

目前有3个分支:

  • master - 代表了开发计算机和内部测试
  • test - 客户测试
  • prod - 嗯......生产

如果有应该是一个变化(无所谓,功能,变化,错误修正...)“工作流程”如下:

  • 新(特征 - )分支从生产
  • A)编写一些代码,并承诺为A
  • 合并A到主
  • 开发测试A
  • 内部QA注意到一个错误
  • 新提交A并合并成master
  • QA说好吧
  • 合并Atest
  • 顾客说这没关系
  • 客户说,它应该去现场,明天
  • 一个管理员和1 - 2个开发者正在合并该功能(S)为prod
  • 部署开始于生产分支

假设并行发生并且至少有两个并行开发中的功能可能导致很大的痛苦。

  • 没有reproduceable建立
  • 在每一个阶段是不同的状态
  • 合并在prod
  • ,我甚至不认为的又

所以我的问题的冲突很多事情是:什么可能是一个良好的分支结构,可以在特定功能的日常生产部署?

目前很容易看出:这是一个纯粹的混乱。你不必命名它。 :D

顺便说一句,他们合并,他们从来没有改变变化。

如果相关,我们使用GitLab Community Edition并通过Jenkins作业进行部署。

回答

1

重新“没有reproduceable建立”:如果你tag提交,建立了基于这些标签重复性。

标签还有助于避免多个分支:

  P1           P2  P3 
master ----o-------------------------------------------o------o 
      \          / /
      A +------o-----------o----------o---------o /
       \ A-QA1(bug) A-QA2(OK) A-C1(bug) A-C2(OK)/
       \          /
      B +-------o-----------o----------o---------o 
        B-QA1(bug) B-QA2(OK) B-C1(bug) B-C2(OK) 

标签:

P1 ....最新的生产部署,新(特征 - )从生产
QA1支... 开发测试,内部QA发现bug
QA2 ... 新提交<枝>QA说,这没关系
C1 ....顾客说,这是 OK
C2 .... 顾客说这没关系
P2..n ....新的生产部署(S)

重新“在每一个阶段是不同的状态”:这里有一个状态,这是参考点在任何给定时间点,它是在

重新“合并在督促冲突”:有没有合并从冲突到P1P2。至少当然,合并冲突并不能阻止从P2P3,但不能跨越多个分支。