似乎您的分支太早了,并且正试图放弃那个早期的分支,但没有意识到这一点。
在正常的基于主干的工作流程中,一旦“Jan”发布,您就会分支“Jan”。然后你继续在主干上工作,“Feb”分支作为“Feb”被释放。换句话说:在主干模型中,您将分支推迟到发布点。当您发现自己将除功能分支或修补程序之外的任何内容合并回主干时,工作流程就会中断。在发布分支上计划大量工作是错误的。主干和功能分支用于面包和黄油的工作;发布分支用于紧急情况。
您的新模型很好,但您可以通过以下方式保持既定的命名约定:
trunk
trunk -> Jan /* Release */
trunk <- Jan /* Hotfix */
trunk -> Feb
trunk -> Mar
trunk -> Apr
请注意,这在拓扑上等价于无主干模型:
trunk Jan
+----------- Jan +------------
+------- Feb | Feb +-------- |
+--- Mar | | Mar +---- | |
| | | | Apr | | | |
| | | | | | | |
trunk Mar Feb Jan Apr Mar Feb Jan
但是,在无主干模型中,您会不断地重命名主干模型中名为“主干”的垂直路径。由于每个人大部分时间都在使用主干,因此命名会通过很多开关阻碍您,就像 LazyBadger 已经说过的那样。
虽然一个的成本svn switch
肯定不高,但一个被遗忘的成本svn switch
却是。在某些时候,有人会在Mar
假期回来后不小心Apr
在当前的分支上工作。然后您必须检测该问题 (QA),将代码合并Apr
到Mar
. 当通常的工作完成后trunk
,问题就不会发生,因为trunk
对于新工作来说总是一个好点。