尽管我在个人项目中使用并喜欢DVCS,并且可以完全看出它如何使其他人对项目的贡献进行管理(例如,典型的Github方案),但对于“传统”团队而言,似乎存在一些问题。 TFS,Perforce等解决方案采用的集中式方法。(“传统”是指办公室中的一组开发人员在一个项目上工作,没有一个人“拥有”,可能每个人都在使用相同的代码。)
我已经预见了其中的几个问题,但请考虑其他因素。
在传统系统中,当您尝试将更改签入服务器时,如果以前有人签入了冲突的更改,则您将被迫合并,然后才能签入。在DVCS模型中,每个开发人员都会签入他们的证书。本地更改,并在某个时候推送到其他回购。然后,该仓库中有一个由2个人更改的文件分支。看来现在必须由某人负责处理这种情况。团队中的指定人员可能没有足够的整个代码库知识,无法处理所有冲突。因此,现在增加了一个额外的步骤,即有人必须与这些开发人员之一联系,告诉他进行合并并再次推送(或者您必须构建一个自动化该任务的基础结构)。
此外,由于DVCS倾向于使本地工作变得如此便捷,因此开发人员很可能会在推送之前在其本地存储库中积累一些更改,从而使此类冲突更加常见和更加复杂。
显然,如果团队中的每个人都只在代码的不同区域工作,这不是问题。但是我很好奇每个人都在使用相同代码的情况。集中式模型似乎迫使人们快速而频繁地处理冲突,从而最大程度地减少了进行大型痛苦合并或让任何人“警惕”主仓库的需求。
因此,对于与办公室中的团队一起使用DVCS的那些人,您将如何处理此类情况?您是否发现您的日常(或更可能是每周)工作流程受到负面影响?在工作场所推荐DVCS之前,我还有其他注意事项吗?