Team Foundation Server与SVN和其他源控制系统

时间:2010-04-25 20:47:58

标签: version-control tfs

我们目前正在寻找在我们的项目中使用的版本控制系统。目前我们的团队不到10人。我们过去5年一直在使用VSS。我从未使用过SVN和其他版本控制系统。

到目前为止,我们一直在使用VSS,但现在存在更强大的源控制系统,如TFS,SVN等。我们计划将项目迁移到Visual Studio 2010,因此首先想到的是开始使用 TFS 2010

我的问题是:与其他源控制系统相比,TFS 有多好?使用它是一个好主意,还是我们应该使用SVN(或任何其他系统)?

3 个答案:

答案 0 :(得分:30)

与TFS,Git,Subversion,CVS和VSS合作后,让我快速总结一下我的经历:

  • 可以说Visual SourceSafe(VSS)和Concurrent Versions System(CVS)现在已经过时了。
  • Git在技术上是最强大的工具,但需要一些时间来理解这些概念。只有当你真正采用分布式 scm方法时,它才能发挥其大部分优势。支持Git的第三方软件数量正在快速增长,但尚未普及到SVN。
  • Subversion(SVN)通过相当常识和通用的方法提供简洁易懂的概念。为大多数IDE和文件管理器提供了大量的集成软件,以及许多扩展软件。由于使用了HTTP和WebDAV等标准协议,它还集成了实际上并非设计用于SVN的软件,例如Microsoft Office(“Windows Web文件夹”)等。如果您计划采用更传统的集中式SCM方法,SVN将是我的建议。
  • TFS版本控制与微软“Visual Studio”产品线和TFS开发生命周期平台的其余部分紧密集成。为了在Visual Studio之外使用,有许多工具和命令行界面,但是在没有Visual Studio的情况下使用TFS真的没有意义,相信我。 TFS版本控制在技术上是我曾经使用过的最糟糕的版本之一。原因:
    • 需要明确检查您使用的每个文件。同时由多个人签出的同一文件意味着TFS发现冲突,无论这些人是否真的改变了什么。
    • TFS使用“工作区”概念,工作副本中的操作会在您工作时记录在服务器上。您不仅可以将源树的多个副本签出到多个文件夹,还需要与服务器保持持续的在线连接(存在“离线”模式,但这会让事情变得混乱)。对本地工作副本中的任何内容的所有更改都必须首先通过TFS客户端工具,因为文件是以只读方式下载的。
    • 事实上,TFS在用户界面中显示的冲突多于实际存在的冲突,这鼓励用户批量接受或批量拒绝更改,从而导致以某种方式丢失更改。因此,它阻碍了您对实际重要内容的看法,这对版本控制系统来说是危险的。
    • VS中的UI集成不支持在认​​真使用SCM系统时需要的许多有用操作,例如原子(仅服务器)创建分支,从早期版本分支,取消删除,还原给定变更集的更改还有更多。
    • 速度非常慢,因为创建分支意味着如果通过VS GUI完成,则下载源树的全新副本。文件夹的简单重命名也很慢。总而言之,它似乎为简单的操作创造了大量的网络流量。
    • 内置的“搁置”功能,您可以在不检查它们的情况下保存当前更改,这是一个不错的主意,但在大多数情况下都非常无用,因为它不支持冲突解决或合并时将搁置的更改应用于您的工作副本。如果创建分支是简单,可靠,快速和直接的,例如,在SVN中,你真的不需要这样的功能,因为每个开发人员都可以创建自己的分支来管理这个需求。
    • 在我们的环境中,TFS版本控制中出现了许多错误,其中实际上已经更改的文件没有被记录,并且在少数情况下文件被恢复为早期版本,恕不另行通知。这在版本控制系统中确实不应该发生!

答案 1 :(得分:10)

Team Foundation Server是一个完整的应用程序生命周期管理套件。如果您拥有带有MSDN订阅的Visual Studio 2010的Professional,Premium或Ultimate版本,则Team Foundation Server 2010现在是免费的。您的所有Visual Studio用户也属于该分类,并且不需要额外的CAL。但是,其他用户将要求您购买CAL以保持合规性。

使用Team Foundation Server 2010,您将获得源代码管理,流程管理,缺陷跟踪,构建服务,报告,项目门户等。 SVN是严格的源代码控制。我用过这两种,它们是不同的野兽。可以公平地说,SVN提供的功能类型总体上是Team Foundation Server的一个子集。虽然有第三方连接器可以更容易地在Visual Studio中使用SVN(免费,我相信 - 同样),但Visual Studio和Team Foundation Server之间的本机集成是相当无缝的。从管理角度来看,无论是在服务器级还是项目级,您都可以在易用性和功能之间取得出色的平衡。

在过去三年左右 - 两个不同的雇主之间 - 我已经设置并安装了Team Foundation Server并在其生命周期内对其进行了维护。两家公司都利用它的优势,能够将有序的流程带到他们的SDLC。如果您是敏捷/ Scrum商店,MSF Agile v5模板非常出色。使用任何工具都可以轻松实现Sprint计划和管理。

编辑 - 添加了有关小型团队的信息:

我注意到有关小团队的问题的评论。鉴于其价格点,Team Foundation Server 2010现在也适用于小型团队。不过,我不会在Team Foundation Server 2008中推荐它。使用最新版本,有一个非常好的“基本”配置,提供轻量级安装,无报告和门户功能。如果您是具有此配置的“一人店”,您也可以在本地安装它(Microsoft实际上将其列为客户端安装的可接受配置。)我在笔记本电脑上将其用于我的POC工作 - 已设置制定每晚维护计划并将备份移至Dropbox。非常适合安心使用。 ; - )

答案 2 :(得分:2)

Martin Fowler在他的网站上有关于这个主题的interesting post