TFS vs SVN

我即将开始一个项目(.NET),需要在TFS和SVN之间做出决定。

我更习惯SVN(与乌龟客户端),CVS和VSS。 TFS是否具有SVN中的所有function?

有没有人从SVN切换到TFS,发现它值得吗?
另外,如果我们需要使用TFS,我们可能需要Visual Studio。

[编辑]
由于我们已经有了TFS的许可证,因此钱不是一个考虑因素。 而且我对TFS vs SVN的源代码控制function更感兴趣,当然其他function列表也是受欢迎的。

那么,对我来说,select显然是TFS:

  • 到Visual Studio的SVN集成是不完整的(IDE中没有很多function),有点bug(AnkhSVN肯定是),而TFS是完美的(这是有道理的)。 我已经使用SVN多次损坏了整个工作空间(在一个月内),从来没有使用过TFS(aprox 2 years)

  • 虽然这两个系统的源代码控制相关function可能相当相同,但可以直接从IDE使用TFS访问,而如果您使用SVN则必须依赖TortoiseSVN或其他外部工具。 几乎所有的TFS任务都可以在解决scheme资源pipe理器选项卡上点击几下。

  • 即使对于复杂的合并(例如, SVN将向您的.csproj文件添加<<<<<<和>>>>>>>>>) ,合并对于TFS来说也更容易,所以您需要手动编辑它们再次从VS打开它们。)

虽然我认为这些理由绰绰有余,宁愿TFS而不是SVN,我补充说:

  • TFS不仅仅是一个源代码控制工具(思考工作项目,项目入口等)

    我曾经在一个中等规模的项目(12个编码器,3个testing人员,3个业务分析师)中使用过,我们已经能够成功地集中TFS中的所有任务(bug报告,项目文档,构build过程,等等。)

    我并不是说使用SVN和其他第三方工具来做同样的事情是不可能的,但是将所有的东西都很好地集成到一个产品中是非常好的。


为了保持公平,这里是TFS的两个明显的缺点:

  • 它的价格

  • 安装TFS非常痛苦,而SVN安装只需几分钟。

    在SqlServer 2008上安装TFS 2008相当复杂,你不能在PDC上安装TFS等等。对我来说,这是我用微软产品所遇到的最糟糕的安装体验。

    这就是说,一旦安装,TFS是非常容易使用(尤其是对不熟悉源代码pipe理系统的编码人员)


在我目前的项目中,我开始使用SVN,并迅速切换到TFS。 我很高兴我做到了。

我决定切换的主要原因显然是SVN(我使用VisualSVN作为服务器和AnkhSVN作为客户端)的整体错误行为。 至less每周一次,我发现自己花了几个小时在密码AnkhSVN错误消息。

到目前为止,我还没有find一个理由后悔切换到TFS。

TFS和SVN之间无法比较

SVN :是源代码版本pipe理系统
TFS :包含版本控制,发布pipe理,需求跟踪,文档发布等function全面的软件开发pipe理系统。

两者都非常适合使用VS2005的IDE集成插件(例如AnkhSVN,Collabnet的加载项),所以这不是必须考虑的问题。

select标准
– 如果你有一个没有或小的预算项目selectSVN
– 如果您只是寻找版本控制系统selectSVN ,如果您正在寻找完整的开发pipe理selectTFS
– 如果你有耐心与不同的集成工具(CruiseControl.Net,NUnit,NCover,FIT)来实现适当的开发环境,selectSVN ,或者如果你正在寻找开箱即用的实现,那么selectTFS

在18个月前使用过TFS后,我发现它有问题,缓慢,烦人,search标准非常有限,而且它有一种不感兴趣,付费,过度使用技术的团队被迫使用Sharepoint和其他MS技术,因为这就是营销所要的。 认真的是一只狗,我宁可使用SourceSafe!

另一方面,SVN是位技术人员,IDE整合是一个痛苦,偶尔也会让人感到困惑,但是用户群是巨大的,大部分问题都可以通过快速解决问题得到解决。

你有没有考虑过Vault ? 运作良好,并不太昂贵。

如果您使用2013版本并使用基于Git的存储库,我只会推荐TFS。 我以前遇到过很多问题,认为它们是稳定的。

  • 一次发送多个文件到diff工具是不可能的。 当您想在合并之前检查您的更改并且不可用时,这是非常有用的。
  • 不一致的function可用性。 某些function只能在IDE中使用,而其他function只能从Windows资源pipe理器中使用,而其他function则只能从命令行使用。
  • 将文件添加到版本控制在IDE中不可用,只能从Windows资源pipe理器集成中获得。
  • 访问货架组只能在IDE中使用,不能通过Windows资源pipe理器集成。
  • 缺less一个统一的安装程序。 仅仅安装TFS是不够的,你还必须安装团队工具和电源工具才能获得基本的function。
  • 货架设置function不合并。 什么可能是一个很酷的做私人分行的方式,本质上保证你的代码将过时并停止工作。
  • 如果您需要使用Visual Studio以外的编辑器,则必须在编辑文本文件之前手动解锁文本文件。
  • 有时Visual Studio会忘记解锁自己正在pipe理的文件,并引发错误。
  • 检入和搁置UI基于可用的文件来提交已经添加到TFS的文件,而不是文件系统中实际存在的文件。 这使得非常容易丢失文件。 (这实际上是Visual Studio处理项目文件的一个问题,但这本身就是另一个咆哮)。
  • 由于前面提到的问题,使用非Microsoft工具编辑源代码是非常困难的。
  • TFSconfiguration与您的来源承诺。 这意味着,如果您更改您的TFS服务器,则所有历史logging的configuration现在都不正确。 有一个可以用来覆盖这个行为的默认configuration,但是不明显。
  • 除了基本级别之外,不支持忽略filter。
  • 无法处理大于249个字符的path。
  • 已解锁但未编辑的文件显示为已更改,即使它们尚未被修改。 区分变化和解锁将使差异变得更容易,或者更好地完全消除整个破坏的解锁系统。
  • Windows资源pipe理器图标叠加不清楚显示文件是否已被编辑。 TFS中的所有文件都有一个绿色的angular落,而修改后的文件会在图标的底部添加一支铅笔。 切换到红色angular落修改会更容易看到或使用乌龟图标系统。
  • 早期版本的Visual Studio在集成更新版本的TFS时遇到问题。 这意味着我们现在在源代码pipe理中拥有IDE版本依赖关系。
  • 包含用户解决scheme文件默认情况下,当他们不需要时。 当然,我承认这个可能是一个偏好问题。
  • 错误caching可能导致本地副本和服务器之间的差异不能准确反映出来。 “获取最新消息”令人非常沮丧,并且发现你实际上并没有最新消息。

现在已经有1.5年了,我正在使用SVN进行各种项目。 目前为止使用的设置:

  • 用于Visual Studio的AnkhSVN客户端。 它从版本2开始就很好地集成了源代码控制提供程序。
  • 服务器在Windows上使用CollabNet Subversion ,在Linux上使用SSL + SVN,通过DAV使用Apache 2.2。

没有任何这些设置的任何问题,我明确build议使用SVN,因为它是免费和容易开始使用。 还有很多项目pipe理/错误跟踪软件包与SVN集成(例如trac )。

我会selectSVN。 我之前从开发者的angular度和SVN合作过,现在我和TFS一起工作,让我告诉你TFS是痛苦的。 虽然TFSfunction丰富,不仅仅是版本控制,它的版本控制也是蛮横的。 合并是可怕的,我们现在很多人转向手动合并或合并工具,因为我们不能依靠TFS。 文件丢失,有时不会下载到本地系统,而且其行为有些古怪,让你想把桌子撞到脑后。

这就是说,如果你想TFS的光荣,愿意与它的痛点,它是一个伟大的工具来设置自动化构build,并释放。

我已经使用了两个 – 但实际上,我已经将我的主要项目从TFS切换到SVN。 我发现离线和匿名访问在我的项目中非常有价值。

一般来说,我认为它们是可比的。 我会select一个你最了解的人,而你是最快乐的人。 在另一个系统中,我没有发现其中的一些特征超出了特征。

请在决定之前查看本文: 开源项目的TFS与Subversion的比较

如果你对svn很熟悉,我会坚持下去。 TFS不是免费的,并不简单。 它不仅仅是源代码pipe理。 如果你是像我们这样的.net商店,而且你正在决定整个开发周期使用什么产品,这是一个竞争者,但是对于简单的源代码控制来说,这是一个矫枉过正的行为。

我会说TFS不仅仅是源代码控制。 如果你能负担得起,我肯定会build议使用它。 当你开始使用Team Builds或者使用Work Items之类的东西的时候,你会发现TFS可以真正pipe理整个开发生命周期,提供了一个丰富的环境,在这个环境中,报告,易用性,灵活的VS集成和可靠的源代码控制全部归入一个。

它确实需要在服务器端的一些铁。 但是我觉得它不是很慢,它在VPN上运行的很好,支持离线工作。

一个主要的问题是安装过程(在服务器端),这是乏味的,非灵活的,在我看来(我来自一个打包应用程序和部署非常重要的领域)是SQL Server,报告可以安装服务,Sharepoint和Web服务。

TFS可以从SVN导入,但是SVN不能从TFS导入。 所以,如果你没有find一个好的理由,否则使用SVN,因为稍后改变你的想法更容易。

关于SVN的最好的事情之一是,我知道每个源代码控制系统都可以从中导入,所以selectSVN是一个非常低风险的select。

根据我的经验,SVN总体上更快,更无痛。 我使用了XCOPY部署脚本,与TFS相比,可以使您的工作和部署速度更快。

我没有TFS的经验,但IDE集成是你应该考虑的。 TFS显然与Visual Studio很好地集成在一起。 对于VS来说,AnkhSVN是唯一可用的免费插件,即使在新版本中也经常出现问题。 虽然我没有尝试VisualSVN。

考虑到TFS 2010也可以安装在Windows Vista / 7客户端操作系统上,并且支持快速的三次点击安装。

优点:

  • 与Visual Studio集成 。 一个真正的加号,如果你正在利用一个完整的微软技术。 发展的堆栈。
  • 自动构build (虽然可以通过其他产品实现)非常好地完成。 持续集成和门票登机牌build设是美妙的国际海事组织。

缺点:

  • Windows Workflow Foundation 。 出于某种原因,selectWindows Workflow Foundation作为定制TFS许多方面的方法。 总之,你需要一本关于Windows Workflow的书来理解它,而我根本没有时间。 非常令人失望的IMO。
  • 项目pipe理 。 我想工作项目的概念很简单,但是有很多古怪的东西让我感到沮丧。 海事组织太复杂了。 来自Trac + SVN背景,我更喜欢Trac这里。 再次,只是我的意见。

不明白这些工具的能力,他们的局限性,将意味着你最终会得到一个不适合你想要的工具。 了解您的要求,并阅读产品手册 – 大量的信息可用来确定适用性。

虽然我完全同意SVN的支持者,因为它是一个光荣的工具(我在大学里曾多次使用过),但是我发现TFS通常在OOTB情况下更加合作,因为在SP1中使用SP1版本2010。

同样,还有一些很好的小插件,使得TFS对于我们这些习惯于SVNtypes的解决scheme的人来说更加可爱,其中许多插件都具有出色的支持:

Team Review for Code Reviewing就是一个例子: http ://teamreview.codeplex.com/用于多平台使用TFS的MS Pathways: http : //www.microsoft.com/pathways/teamprise/FAQ.htm

这个SO问题是TFS插件的一个很好的资源: 什么插件/实用程序可用于TFS?

如上所述,对智者来说,TFS可能是一个痛苦的安装,所以要谨慎行事。 遵循下面的路线,我遇到了最小的问题:

Studio 2008 – >修补 – > Studio 2010 – >修补 – > .NET – > SQL Server 2008RD / 2012 – >修补 – > TFS – >修补