我们公司目前使用的是简单的主干/发布/热修复分支模型,我们想知道哪种分支模型最适合您的公司或开发过程。
以下是我所看到的三个主要描述,但它们部分相互矛盾,或者不足以理清我们遇到的后续问题(如下所述)。因此,到目前为止,我们的团队默认的解决方案并不是很好。你在做更好的事情吗?
一个pull --rebase
或等待合并回主线直到你的任务完成?就我个人而言,我倾向于合并,因为这保留了一个任务在哪个基础上开始和完成的可视化说明,为此我甚至更喜欢merge --no-ff
。然而,它也有其他缺点。许多人还没有意识到合并的有用属性——它不是可交换的(将一个主题分支合并到master并不意味着将master合并到主题分支)
有时,错误的发生是因为我们的程序没有用简单的规则捕获特定的情况。例如,早期版本所需的修复当然应该充分地基于下游,以便能够将上游合并到所有必要的分支中(这些术语的使用是否足够清楚?)然而,在开发人员意识到它应该被放置在更下游之前,修复程序就已经进入了master,如果它已经被推了(更糟糕的是,合并或基于它的其他东西),那么剩下的选择是选择性的,并伴有相关的风险。你用的是什么简单的规则?这还包括一个主题分支必然排除其他主题分支的尴尬情况(假设它们是从一个公共基线分支而来)。开发人员不希望在完成一个功能后再开始另一个功能,就像他们刚刚写的代码已经不存在了一样 < / p >
创建合并冲突的可靠方法是在分支之间进行筛选,它们永远不能再次合并?在任何一个分支中应用相同的提交(如何做到这一点?)可能解决这种情况吗?这是我不敢推动一个很大程度上基于合并的工作流的原因之一
我们意识到,从主题分支中组装一个完整的集成将是非常棒的,但我们的开发人员的工作通常没有明确的定义(有时就像“闲逛”一样简单),如果一些代码已经进入了一个“杂项”主题,那么根据上面的问题,它就不能再从那里取出来了?你如何定义/批准/毕业/发布你的主题分支?< / p >
适当的程序,如代码审查和毕业当然是可爱的。
但是我们根本无法把事情弄得足够清楚来处理这个问题——有什么建议吗? 集成分支、插图?李< / p > < / >以下是相关问题: