我认为这篇文章《成功的Git分支模型》在经验丰富的DVCS用户中是众所周知的。
我hg
主要使用它,但是我认为这种讨论对任何DVCS都适用。
我们当前的工作流程是每个开发人员克隆主存储库。我们在自己的本地仓库上编写代码,运行测试,如果一切顺利,则推送给主服务器。
因此,我们希望设置诸如Jenkins的CI服务器,并通过将来的预配系统(厨师,木偶,ansible等)改善我们的工作流程。
实部
好了,以上介绍的模型很好用,但分支机构可以破坏CI。Feature分支应该与原点同步(根据文章,它将是development
分支),以使CI和合并更加顺利,对吗?
说爱丽丝和鲍勃正在研究两个功能。但是爱丽丝第二天就完成了。鲍勃的功能需要一个星期。到Bob完成时,他的更改已过期(也许Alice重构/重命名了某些类)。
一种解决方案是,每天早晨开发人员必须master/origin
检查是否有任何更改。如果Alice提交了,Bob应该拉入并合并到他的工作区中,以便他的功能分支是最新的。
- 这是个好方法吗?
- 这些分支是否应该存在于主存储库中(不是本地克隆?),这意味着每个开发人员都应向GitHub / Bitbucket上的主存储库授予特权,以便他们可以创建新分支吗?还是在本地完成?
- 最后,如果分支未与同步,则本文介绍的模型应打破CI
origin/master
。既然我们要进行夜间构建,开发人员是否应该在离开工作之前进行合并和合并,并且CI也要在每个功能分支上运行?