我的团队将GIT与典型的开发-发布-主分支设置一起使用。所有功能分支都是在开发之外创建的,而发布分支是在开发之外创建的。
但是,与其将功能分支合并回开发,不如将其首先提交到所有代码都驻留的未来代码分支中-用于下一个产品发布的东西。
这造成了一个问题,因为有时将内容推送到未来代码时会发生合并冲突;并且当发生这种情况时,您将必须与未来代码的提示合并以解决问题,然后在分支机构中保留将来的内容。
他们想出了几种方法来防止原始分支受到将来的污染。但是我相信任何方式(保留原始副本,跟踪对摘樱桃的提交等)都不是解决此问题的理想方法。
我认为应该没有将来的代码分支,并且如果您想尽早显示质量检查,则可以从功能分支运行构建-没有将来的代码分支。
人们是否成功使用了其他方法不会使GIT陷入困境?
感谢任何有用的提示。
答案 0 :(得分:1)
直接从develop
分支面临的问题是,您添加了复杂的人员,他们添加了QA可能不想在构建中添加的提交。同样,没有可靠的流程,也没有办法让QA带着一个错误让您签出分支并继续使用它(因为开发人员每天都要花很多精力)。
如果您从开发人员的本地功能分支提供构建,则事情开始重复,并且质量检查无法处理获得的构建数量。我们倾向于每周一起提供包含许多功能的内部版本。
我倾向于坚持坚实的结构
ReleaseCandidate - this is where live code is
BetaCandidate - this is where 'future' code lives
DeveloperMaster - this is where every developer puts there code in
这给你的是:
当需要构建时,专门的开发人员将所有功能合并到BetaCandidate中,并进行质量检查。质量检查又回来了,并且50个新功能中有3个失败了,您现在可以从BetaCandidate中选择并删除这些提交,并将BetaCandidate合并到ReleaseCandidate中并释放它。
然后,开发人员仍然在DeveloperMaster中保留了他的旧更改,并且可以解决该错误,并且此功能将进入下一个beta版本。
如果该功能需要在发布之前修复,则开发人员将对DeveloperMaster和提交给BetaCandidate的樱桃精选进行更改。
您有一个稳定的git流,它不允许任何东西向后前进,而只能向前。
答案 1 :(得分:1)
这听起来相当于将单个开发分支分为一个不稳定的在制品分支和一个(更)稳定的集成分支。
功能分支是从(最后)稳定的集成版本开始,还是从不稳定的尖端开始,除了单独测试该功能之外,没有什么大不同。
这造成了一个问题,因为有时在将内容推送到将来的代码时会发生合并冲突。并且当发生这种情况时,您将不得不与将来的代码技巧合并以解决它,然后在分支中拥有将来的东西
您无需合并回功能分支即可解决此问题,只需正常解决合并即可。
我认为应该没有将来的代码分支,并且如果您想尽早显示质量检查,则可以从功能分支运行构建-没有将来的代码分支。
那么在从功能重新开发到最终合并之前,没有机会在质量保证中运行集成测试吗?很好,只是意味着开发将相对不稳定。
人们成功使用的其他方法不会使GIT陷入困境吗?
合并冲突不会使任何事情陷入困境-您只需解决它们并继续前进。