我向我的开发团队介绍了Git,除了我之外,每个人都不喜欢它。他们想用Team Foundation Server替换它。我觉得这是一个巨大的倒退,尽管我对TFS并不是很熟悉。有经验的人能否比较一下TFS和Git分支支持?此外,总体上说,TFS有什么优缺点?在使用Git几年后,我会讨厌TFS吗?
我向我的开发团队介绍了Git,除了我之外,每个人都不喜欢它。他们想用Team Foundation Server替换它。我觉得这是一个巨大的倒退,尽管我对TFS并不是很熟悉。有经验的人能否比较一下TFS和Git分支支持?此外,总体上说,TFS有什么优缺点?在使用Git几年后,我会讨厌TFS吗?
我认为这个说法:
除了我之外,每个人都讨厌它
使得任何进一步讨论都是浪费时间:当你继续使用Git时,如果出现任何问题,他们会责备你。
除此之外,对我而言,Git相对于集中式版本控制系统有两个优点,我最欣赏(正如Rob Sobers所描述的那样):
但是,正如我所说:我认为当每个人都讨厌Git时,与其试图说服他们,不如了解为什么他们讨厌Git可能更有帮助。
如果他们不想使用它,因为它对他们来说还很陌生,并且不愿意学习新东西:您确定您可以与这些员工成功开展开发工作吗?
真的每个人都讨厌Git吗? 还是受到某些意见领袖的影响?找到这些领袖并问问他们的问题。说服他们,你就会说服团队的其他成员。
如果你不能说服领导者:放弃使用Git,使用TFS。这将使您的生活更轻松。
人们需要放下武器,远离边缘,并且冷静思考一分钟。事实证明,分布式版本控制系统(DVCS)具有客观、具体和不可否认的优势,这将对团队的生产力产生巨大影响。
这一切归结于分支和合并。
在DVCS之前,指导原则是“祈求上帝不要让你进入分支和合并,但如果必须进入,请让它变得非常简单。”
现在,随着DVCS的发展,分支(和合并)得到了很大改进,新的指导原则是,“随时做分支,它将为您带来很多好处,不会给您带来任何问题。”
对于任何团队来说,这都是一个巨大的生产力提升。
问题是,为了让人们理解我刚才说的话并相信它是真实的,他们首先必须投资一点学习曲线。他们不需要学习Git或任何其他DVCS本身...他们只需要学习Git如何进行分支和合并。读一些文章和博客文章,慢慢地阅读并逐步理解,这可能需要两三天。
但是一旦你理解了,你就不会考虑选择非DVCS了。因为确实存在着明显、客观、具体的DVCS优势,而最大的优势在于分支和合并领域。
翻译: @Rob,TFS有一种叫做“Shelving”的功能,它解决了您对提交正在进行的工作,而不影响正式构建的担忧。我知道您认为中央版本控制是一种阻碍,但就TFS而言,将代码检入架子上可以被视为一种优势,因为这样中央服务器就有了您正在进行的工作副本,在您的本地机器崩溃、丢失/被盗或需要快速切换方向的罕见情况下。我的观点是,在这个领域应该给予TFS适当的赞扬。此外,TFS2010中的分支和合并比以前的版本有所改进,在您说“...从经验来看,TFS中的分支和合并不好。”时,不清楚您指的是哪个版本。免责声明:我是TFS2010的普通用户。
编辑于Dec-5-2011:对于OP(原帖发布者),TFS让我困扰的一件事是,当您不在处理本地文件时,它坚持将所有本地文件设置为“只读”。如果您想进行更改,流程是您必须“签出”该文件,这只是清除了文件上的只读属性,以便TFS知道要关注它。这是一个不方便的工作流程。我希望它能自动检测到我是否已经做出了更改,并且根本不用担心/干扰文件属性。这样,我可以使用Visual Studio、Notepad或任何我喜欢的工具修改文件。版本控制系统在这方面应尽可能透明。有一个Windows Explorer扩展程序(TFS PowerTools),它允许您在Windows Explorer中处理文件,但并没有简化工作流程。
除了已经讨论的所有内容(
https://dev59.com/6W855IYBdhLWcg3wUScW#4416666
),
虽然正确,但TFS并不只是版本控制系统(VCS)。TFS提供的一个主要功能是本地集成的缺陷跟踪功能。更改集与问题相关联,并且可以进行跟踪。支持各种签入策略,以及与Windows域的集成,这是运行TFS的人所需要的。紧密集成的Visual Studio GUI是另一个卖点,它吸引了那些不太平均喜欢用鼠标点击的开发者及其经理。
因此,将Git与TFS进行比较并不是一个适当的问题。正确的问题应该是将Git与TFS的VCS功能进行比较。在这方面,Git胜过TFS。但是,任何严肃的团队都需要其他工具,而这就是TFS提供一站式服务的地方。
对我来说,最大的区别是TFS会添加所有附属文件(.vssscc)到您的解决方案中,以“支持”TFS - 我们最近遇到了这些文件被映射到错误分支的问题,导致了一些有趣的调试...
.git
文件夹来跟踪所有存储库的详细信息。TFS将至少修改您的.sln
(或者是.csproj
?)文件,以将远程存储库的位置放入其中。 - CodingWithSpike