我把Git介绍给了我的开发团队,除了我之外,每个人都讨厌它。他们想要取代 它与Team Foundation Server。我觉得这是一个巨大的倒退,尽管我不是很熟悉TFS。有经验的人能比较一下TFS和Git上的分支支持吗?另外,总的来说,TFS的优点和缺点是什么?之后我会讨厌它吗 使用Git几年?
当前回答
在对利弊进行了一番调查后,我所在的公司也决定采用TFS。不是因为GIT不是一个好的版本控制系统,而是最重要的是对于TFS交付的完全集成的ALM解决方案。如果版本控制特性很重要,那么选择GIT可能是最好的。然而,对于普通开发人员来说,陡峭的GIT学习曲线不可低估。
关于TFS作为一个真正的跨技术平台的详细解释,请参阅我的博客文章。
其他回答
最重要的是(
https://stackoverflow.com/a/4416666/172109 https://stackoverflow.com/a/4894099/172109 https://stackoverflow.com/a/4415234/172109
), 这是正确的,TFS不仅仅是一个风险投资。TFS提供的一个主要特性是本机集成的错误跟踪功能。变更集与问题相关联,并且可以跟踪。支持各种签入策略,以及与Windows域的集成,这是运行TFS的人所拥有的。与Visual Studio紧密集成的GUI是另一个卖点,这吸引了鼠标和点击较少的开发人员及其经理。
因此,比较Git和TFS并不是一个合适的问题。正确的,尽管不切实际,问题是比较Git和TFS的VCS功能。在这一点上,Git将TFS踢出了水面。然而,任何严肃的团队都需要其他工具,这就是TFS提供的一站式目标。
人们需要放下枪,离开窗台,思考一分钟。事实证明,DVCS有客观的、具体的、不可否认的优势,这将对团队的生产力产生巨大的影响。
这一切都归结为分支和合并。
在DVCS之前,指导原则是“向上帝祈祷,你不必涉足分支和合并。如果你这样做了,至少求他让它变得非常非常简单。”
现在,有了DVCS,分支(和合并)得到了很大的改进,指导原则是“立即完成”。它会给你带来很多好处,而且不会给你带来任何问题。”
这对于任何团队来说都是一个巨大的生产力助推器。
问题是,为了让人们理解我刚才说的,并相信这是真的,他们必须首先投入一点学习曲线。他们不需要学习Git或任何其他DVCS本身……他们只需要学习Git如何进行分支和合并。一遍又一遍地阅读一些文章和博客文章,慢慢来,直到你看到为止。那可能要花2到3天的时间。
但一旦你看到这一点,你甚至不会考虑选择非dvcs。因为DVCS确实有明确、客观、具体的优势,最大的优势在于分支和合并。
Original: @Rob, TFS has something called "Shelving" that addresses your concern about commiting work-in-progress without it affecting the official build. I realize you see central version control as a hindrance, but with respect to TFS, checking your code into the shelf can be viewed as a strength b/c then the central server has a copy of your work-in-progress in the rare event your local machine crashes or is lost/stolen or you need to switch gears quickly. My point is that TFS should be given proper praise in this area. Also, branching and merging in TFS2010 has been improved from prior versions, and it isn't clear what version you are referring to when you say "... from experience that branching and merging in TFS is not good." Disclaimer: I'm a moderate user of TFS2010.
Edit Dec-5-2011: To the OP, one thing that bothers me about TFS is that it insists on setting all your local files to "read-only" when you're not working on them. If you want to make a change, the flow is that you must "check-out" the file, which just clears the readonly attribute on the file so that TFS knows to keep an eye on it. That's an inconvenient workflow. The way I would prefer it to work is that is just automatically detects if I've made a change and doesn't worry/bother with the file attributes at all. That way, I can modify the file either in Visual Studio, or Notepad, or with whatever tool I please. The version control system should be as transparent as possible in this regard. There is a Windows Explorer Extension (TFS PowerTools) that allows you to work with your files in Windows Explorer, but that doesn't simplify the workflow very much.
对我来说,主要的区别是TFS将添加到您的解决方案中的所有辅助文件(.vssscc)来“支持”TFS -我们最近遇到了这些文件最终映射到错误的分支的问题,这导致了一些有趣的调试…
在对利弊进行了一番调查后,我所在的公司也决定采用TFS。不是因为GIT不是一个好的版本控制系统,而是最重要的是对于TFS交付的完全集成的ALM解决方案。如果版本控制特性很重要,那么选择GIT可能是最好的。然而,对于普通开发人员来说,陡峭的GIT学习曲线不可低估。
关于TFS作为一个真正的跨技术平台的详细解释,请参阅我的博客文章。
推荐文章
- Visual Studio Code无法检测已安装的Git
- 强制LF eol在git的回购和工作副本
- Git:在裸库中更改活动分支的正确方法?
- 删除git中的分支是否会将其从历史记录中删除?
- 防止在GitHub上推送到master ?
- 根据Git,谁是“我们”,谁是“他们”?
- git如何合并后樱桃采摘工作?
- Git搜索单个文件历史记录中的字符串
- Git命令显示所有(轻量级)标签创建日期
- Gitignore并没有忽视文件夹
- 什么时候用。git/info/exclude代替。gitignore来排除文件?
- 如何告诉git忽略个别行,即gitignore为特定行代码
- “git diff——耐心”是什么意思?
- 我如何在GitHub中为其他人的代码做出贡献?
- 签出旧的提交并使其成为新的提交