SVN 与 Team Foundation Server

标签 svn tfs

几个月前,我的团队将源代码控制切换到 Apache Subversion来自Visual SourceSafe ,我们并没有更快乐。

最近我一直在看Team Foundation Server ,而且至少从表面上看,看起来非常令人印象深刻。它与 Visual Studio 进行了一些很好的集成,并且为 DBA、测试人员、项目经理等提供了许多出色的工具。

这两种产品最明显的区别是价格。 Apache Subversion(免费)很难被击败。 Team Foundation Server 非常昂贵,因此额外的功能确实会让 Subversion 感到震惊。

  • 有人对两者都有实践经验吗?
  • 它们如何比较?
  • Team Foundation Server 真的值得花钱吗?

最佳答案

以下是对我来说两者之间最大的区别,我都使用过:

1) TFS 与进行开发的“Visual Studio 方式”紧密耦合。这并不是说 TFS 与 VS IDE 紧密耦合,这意味着 TFS 很难保持熟悉的 Visual SourceSafe 的“ checkin ”/“ checkout ”范例,即使它确实不再是合适的模型。当您的开发人员可能会花时间与网络断开连接时,Subversion 的“提交”/“更新”概念更加现实。 TFS 希望开发人员始终连接到服务器。这是一个很大的减分。我个人认为,由于与 Visual Studio 的紧密集成,TFS 对于文件在服务器和本地磁盘上的组织方式不太透明。即使是 TFS 的大力支持者也承认,对于离线工作的开发人员来说,其联网 checkin / checkout 模型并不是一个有吸引力的选择。在人们开始关注 DVCS 选项(如 git 和 Mercurial)而不是 SVN 的环境下,TFS 的“ checkout ”模型似乎有点像恐龙。

2) 成本。 那些说 TFS 不贵的人要么是很小的商店,要么不遵守 TFS 的许可条款。您所做的几乎所有事情都需要客户端访问许可证。您是一名只负责管理 bug 的经理吗?您需要大约 250 美元的 CAL(零售 TFS 许可证包含 5 个)。只想报告问题的企业用户? 250 美元。开发商? 250 美元(除非他们有 MSDN,在这种情况下它包含在内)。服务器? 500 美元(如果您有 MSDN,则包含在内)。当然,向您出售 TFS 副本的人会告诉您,工作项跟踪对于其他用户是免费的,但这些额外用户只能看到他们自己创建的工作项,而看不到整个团队的工作项,这不是在面向团队的敏捷环境中太有用了。当您拥有一个中型组织时,所有这些都会增加,并且当 SVN 和 CruiseControl.net 等众多同类最佳产品的增量成本为 0 美元时,所有这些都变得难以证明其合理性。 (不过,公平地说,我仍在等待一个真正的 OSS 问题跟踪器)

3) 项目结构。在项目数量较少的大型团队中,TFS 可能会运作良好。如果您内部有许多小型、未连接或松散连接的业务线应用程序,那么 TFS 的结构可能会开始变得霸道。一方面,不可能定义项目本身的分类法——您可以在项目中设置“区域”,但所有问题和文档都在“项目”的基本上下文中一起跟踪。创建新的“项目”通常非常耗时,而且对于小努力来说是多余的。当然,SVN 没有这样的功能,因为它只专注于源代码控制,但如果您需要良好的小项目灵 active ,SVN 和其他问题跟踪工具可能是更好的选择。

我的观点,就其值(value)而言:

  • 对于拥有大型且预算充足的项目的大型团队,在开发人员几乎完全在 IDE 中工作的 Microsoft 商店中,TFS 是赢家。当您需要在项目中集中执行策略时,TFS 也会胜出。

  • 对于许多小型团队(拥有许多不同的小型项目)或成本问题的商店,或者开发人员与源代码控制脱节的团队,请选择 SVN。

    <

关于SVN 与 Team Foundation Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4219/

相关文章:

c# - Visual Studio 2010 : Import csproj into another csproj "injected" via svn-externals

tfs - 在 TFS 2010 中的集合之间移动项目

tfs - TFS 2010 上的 VS 2012 单元测试问题

tfs - VS 2010 - TFS 限制检查而不附加任务,BUG

javascript - 如何使用 JavaScript 获取 REST 客户端?

c# - SharpSVN 中工作目录的当前版本

svn - 与 Subclipse 合并时出现树冲突

c# - AssemblyVersion 和 AssemblyFileVersion 在一个单独的文件中

svn - 将遗留项目(日期系列的文件夹)导入 Subversion

svn - 为什么 `git remote` 没有在我的 git-svn 存储库中列出任何内容?