我最近开始在个人项目上进入Git,我可以看到DVCS如何让我们在工作中受益(这是一家大型企业软件公司,目前正在运行Perforce)。我的团队中的功能工作主要包括开发人员创建自己的分支;有时这些是由小型开发团队共享的。我认为在这种情况下使用DVCS会更有效率。
然而,在更一般的情况下,我有兴趣听到在工作中使用DVCS的人,大中型团队。
我以前雇主的团队使用Git,它对我们很有用。我们不是那么大(可能是16个左右,可能有8个真正活跃的提交者?),但我对你的问题有答案:
Git对我们来说是一件非常棒的事情,因为它具有高度的灵活性;但是,我们确实必须建立一些约定(分支和标记名称,repo位置,脚本等,进程)或者它可能有点混乱。一旦我们设置了惯例,我们的灵活性就非常棒。
更新:我们的惯例基本上是这样的:
当您的团队经验丰富并学会彼此合作时,您还会学到其他一些东西,但这足以让我们开始。
更新:任何关注这些事情的人现在都已经知道了,但是Vincent Dreissen已经写了一篇非常全面(但不是咄咄逼人)的take on branching and release engineering using Git。我强烈建议将他的过程作为起点,因为有两个原因:
来自whygitisbetterthanx的工作流程架构:
要将此扩展到更多开发人员,您只需在集成管理器和开发人员之间添加另一层“可信赖的副官”。
我和Glasgow Haskell Compiler团队一起使用Darcs工作了几年。我最近(几个月)开始使用git作为我自己的回购副本,无论是为了表现还是为了提高我的教育水平。
git
,当我与其他开发人员密切合作时,我会经常创建一个新的分支,只是为了与另一个人分享。那个分支永远不会打到中央回购。相当着名的“技术讲座:Linus Torvalds on git”解释了它如何用于Linux(就像我能想到的一样大)
如果我没记错的话,它的使用被比作军事指令链 - 每个模块都有一个维护者,负责处理来自开发人员的拉取请求,然后有一些“最值得信赖”的人处理从模块维护者拉入数据的问题。官方kernel.org git存储库。
"Linux: Managing the Kernel Source With 'git'"也解释了它,虽然它再次不是一个简洁的解释..
这是一个例子(绝不是“普遍的”)
我们有中央VCS(ClearCase或SubVersion,具体取决于不同的项目),我们将它们用于“官方”开发工作(开发,补丁,修复),其中分支的数量有限且识别良好。
但是,对于涉及大量中间状态的重构开发,其中没有任何工作,并且许多开发人员需要拥有自己的基于活动的分支或分支,这些开发人员之间以P2P方式建立一些Git存储库。 一旦工作达到某种0.1稳定性,并且合并减少,它就会在VCS中重新导入,工作可以以“有序”的中心方式进行。
自从Git on Windows works well(MSysGit)以来,我们设法在这方面快速完成了小的初始开发。
我们仍在评估Git的全面项目开发。
最好研究一下linux内核开发人员的工作方式。他们有一个非常复杂的工作流程,从多个来源提交更改,然后每个子系统(称为中尉)的可信赖开发人员提取变更,当他们很高兴将他们提交给Linus时,他们最终将他们拉入他的树或拒绝他们。当然它比这更复杂,但这是一般概述。