TFS、SVN和GIT有什么区别?

48

我使用微软 Visual SourceSafe 进行版本控制。 我想改变这种方法并使用更新的软件来完成这项工作。 这三个应用程序之间有什么区别?哪一个更好一些?

这些解决方案是否与 Visual Studio 集成?


1
你能更具体地描述吗?有哪些特别的功能?总体易用性如何(我假设您是在Windows下)?VS集成如何? - Roman
我的意思是通用性和与VS的集成。 - masoud ramezani
17
在我看来,它们都比VSS好得多。 - Brian Rasmussen
还有一个需要考虑的是Mercurial(Hg)。现在Google Code和CodePlex都支持它,这也是一个相当不错的选择。请查看http://tekpub.com/codeplex -- 视频也会让您对像Git和Mercurial这样的分布式版本控制系统有更深入的了解。 - Ryan
TFS可以与IDE集成。但是,如果您使用类似于Agent SVN的MS-SCCI插件,则也可以以类似于TFS的方式将Subversion与Agent SVN集成。 - jussij
1
Visual Source Safe绝对不安全...它会随意丢失更改集,而且速度极慢 - 使用它应该是一种犯罪行为。 - Vedran
5个回答

122

TFS是一个应用程序生命周期管理解决方案,而SVN和Git只是源代码控制。

TFS除了源代码控制,还包括问题跟踪、文档管理、报告、持续集成、虚拟实验室等功能。

TFS的源代码控制和SVN都是集中式的,Git则是分布式的。

在Stackoverflow上有许多关于TFS和SVN的讨论。

TFS与Visual Studio最紧密地集成,而SVN有一些第三方选项可以与Visual Studio集成,但不如TFS那样紧密集成。

Git有GitExtensions,允许在Visual Studio内部进行低级别的集成。


59
+1 表示陈述事实而不带偏见。 - Joachim Sauer
3
另外:TFS需要预付费用。Git使分支和合并更加容易、安全和“便宜”。 - Benjol
11
每次我不得不离线工作时,TFS都会让我崩溃。 - Dan Abramov
6
是的 - 我试着在我的回答中避免个人观点,但除非在即将发布的更新中出现了重大改变,否则我无法想象自己永远再次使用TFS。我们公司曾尝试过采用它,但它却影响了很多生产力,在之前使用它的公司中,它总是带来麻烦。 - Michael Shimmins
3
公平地说,如果TFS 2012带有一款不糟糕的分布式源代码控制工具,我会考虑使用它,但目前我非常支持分布式版本控制系统。 - Michael Shimmins
显示剩余3条评论

10
更好是一个大讨论,但在同样的方向上,你必须考虑成本。SVN是免费的,而TFS不是。然而;如果您通过MSDN订阅获得您的Visual Studio,并且这是足够高级的话,那么当TFS2010发布时,您将通过MSDN订阅下载免费获得它。这可能是一个平衡的关键因素。至于与Visual Studio的集成,您无法击败Team Explorer对于TFS。然而,我曾经使用过Ankh进行SVN,效果也很好。我想这个问题已经讨论得足够多了:-)希望这可以帮到你。

5
这个问题比较老了,但是如果有人碰巧遇到它:自2013年1月以来,git已经被集成到TFS中(公告:http://www.visualstudio.com/en-us/news/2013-jan-30-vso#git支持)。这意味着团队现在可以使用git作为源代码控制工具(而不是“内置”的TFS版本控制系统),同时仍然可以使用TFS的其他功能,如持续集成、问题跟踪等等。
MSDN上的原始讨论:http://blogs.msdn.com/b/visualstudioalm/archive/2013/01/30/getting-started-with-git-in-visual-studio-and-team-foundation-service.aspx StackOverflow有大量相关讨论(https://stackoverflow.com/search?q=tfs+git),无法指向特定内容。

3
我只能谈论与SVN的Visual Studio集成。我使用过VisualSVNAnkhSVN两者,它们都有非常紧密的集成,并允许你从Solution Explorer菜单执行各种操作,就像你通常使用VSS一样。Ankh的2+版本(我目前正在使用)对我来说非常稳定,比旧版本好得多。
这看起来像是一个关于使用Git with Visual Studio的相当详细的讨论。

我已经尝试过所有这些,最终总是回到命令行。GUI工具总是感觉像是半成品的hack工作。 - kprobst
1
@kprobst:我与Ankh的大部分交互是通过获取最新版本和提交来完成的,因此我没有感受到任何限制。 - Roman
3
我不会把 Ankh 称作一个粗制滥造的半成品,它还不错。 - heisenberg

3

以下是对其他回答的补充,不是完整答案,因为Michael Shimmins已经满足了大部分我要说的内容。

TFS(特别是2010版本)非常适合实施源代码控制技术,而这些技术在使用VSS时会非常困难。使用TFS进行分支和合并比使用SVN更加容易,而且可以跟踪时间。从用户交互的角度来看,我也会这样评价Git,但这些工具正在慢慢变得更好。

如果你花费一定的时间学习Git并掌握社区所推荐的标准实践方法,那么Git是一个非常好的工具,无论在任何版本控制系统中都值得一试。然而,在团队中,仍然会遇到SLN和CSProj/VBProj文件的冲突问题,这是由于这些文件的结构和管理方式造成的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接