我们使用:
直到项目接近完成,或者我们正在创建一个里程碑版本(例如。产品演示,演示版),然后我们(定期)从我们当前的开发分支到:
发布分支中没有新特性。只有重要的bug在发布分支中被修复,修复这些bug的代码被重新集成到开发分支中。
有一个开发和一个稳定(发布)分支的两部分流程使我们的生活变得更容易了,我不相信我们可以通过引入更多的分支来改进它的任何部分。每个分支也有它自己的构建过程,这意味着每隔几分钟就会产生一个新的构建过程,所以在代码签入之后,我们在大约半小时内得到了所有构建版本和分支的新可执行文件。
有时,我们也有一个开发人员的分支,致力于一项新的、未经证实的技术,或者创建一个概念的证明。但通常情况下,只有当更改影响到代码基的许多部分时,才会这样做。这种情况平均每3-4个月发生一次,这样的分支通常在一两个月内重新整合(或报废)。
一般来说,我不喜欢每个开发人员都在自己的分支中工作,因为你“跳过去,直接搬到集成地狱”。我强烈反对。如果你有一个共同的代码库,你应该一起工作。这使得开发人员对他们的签入更加谨慎,每个程序员都知道哪些更改可能会破坏构建,因此在这种情况下测试更加严格。
关于入住早期的问题:
如果你只需要完美码要签入,实际上什么都不应该签入。没有任何代码是完美的,对于QA来验证和测试它,它需要在开发分支中,这样才能构建一个新的可执行文件。
对于我们来说,这意味着一旦一个特性完成并由开发人员进行测试,它就会被签入。如果有已知的(非致命的)错误,甚至可以签入,但在这种情况下,通常会通知受bug影响的人。不完整和工作中的代码也可以签入,但前提是它不会造成任何明显的负面影响,如崩溃或破坏现有的功能。
有时,不可避免的合并代码&数据检查会使程序在新代码生成之前无法使用。我们做的最起码是在签入注释中添加一个“等待构建”,并/或发送一封电子邮件。