SVN vs VSS vs CVS比较帮助

时间:2009-07-09 03:29:02

标签: svn version-control cvs visual-sourcesafe

我们目前正在确定是否将CVS和VSS项目移至单个SVN服务器。

我已经使用SVN很长一段时间了,但是被迫使用CVS和VSS来完成工作。

请您帮我说明为什么搬到SVN比购买VSS更好?还有从CVS迁移到SVN的好处是什么?

我们在C#.NET / Java / Perl / Visual Basic中有项目。

除了成本差异之外,我还能对老板说些什么来说服他们转向svn。

有没有办法在转移到SVN时保留VSS和CVS的历史记录?

7 个答案:

答案 0 :(得分:10)

这是需要大量细节的问题之一,但它将归结为“你为什么喜欢使用SVN?”以及你可以从“喜欢”列表中使用什么来呈现给你的老板。

我已经用过这三个了。我只能说出自己的经历和偏见。我的使用历史是VSS - > CVS - > SVN

<强> CVS

优点:

  • 可在互联网上使用
  • 非常稳定

缺点:

  • 很难重命名。这会引起很多痛苦。

我的主要成果是客户端软件。我发现所有客户端软件都不连贯和脱节。我绝对讨厌使用它。

<强> VSS

优点:

  • 分享项目很容易。
  • 与Microsoft IDE很好地集成

缺点:

  • 它使用Microsoft Jet存储引擎,它很容易破坏它访问的任何内容。
  • 除非您购买类似SourceOffsite的内容,否则不能在局域网外使用。
  • 结帐锁定文件和签入解锁文件会降低较大群组的工作效率。许多新手开发人员将文件签出,团队的其他成员必须等待他们进行任何检查。
  • Microsoft不再开发此功能。微软甚至没有在内部使用它来为他们的现金牛应用程序,如Office和Windows。他们实际上使用Perforce的自定义版本。

<强>的Subversion

优点:

  • Checkout-edit-merge文件编辑周期非常适合团队合作
  • 创建分支非常便宜,不会复制物理文件
  • 正在不断发展
  • 有几个Subversion包可供选择
  • 许多第三方供应商与Subversion集成。它具有丰富的应用生态。
  • 一个主要优点是您现在可以将安全性Subversion与Active Directory树集成。

缺点:

  • 合并冲突可能仍然是一个主要的痛苦,但这与大多数其他版本控制系统相同。
  • 使用安全性可能有点棘手,具体取决于您选择运行存储库的服务器(svnserve.exe或Apache / WebDAV)。

我猜你的老板想购买VSS2005,这将在Windows上运行。我的建议是你坚持使用这3个Subversion发行版/软件包中的一个

一般Subversion安装包: CollabNet Subersion - http://www.open.collab.net/downloads/subversion/ 这将安装svnserver.exe(自定义服务器)和Apache / WebDAV,或者您可以选择在安装过程中安装哪个。您将能够使用http://和svn:// protocols来为您的存储库提供服务。

Subversion加管理控制台: VisualSVN服务器 - http://visualsvn.com/server/ 他们做自己的Subversion发行版。此程序包具有Microsoft管理控制台(MMC)管理单元以管理服务器。这个将帮助您设置Active Directory树的权限。这主要面向http:// protocol。

Subversion管理控制台: PainlessSVN - http://www.painlesssvn.com 这个只适用于svnserve.exe(自定义服务器)。它是一个Microsoft管理控制台(MMC)管理单元,用于管理设置和用户。这主要面向svn://协议。

Tom Ritter提供了一些非常好的链接,可以将历史和代码从CVS / VSS导入Subversion。

答案 1 :(得分:4)

There are tools将CVS历史记录转换为SVN并other tools迁移VSS历史记录 - 因此您可以在迁移到更好的系统时使用它们。

由于评论和其他地方相关的所有原因,SVN往往比CVS或VSS更好(除非你有一些奇怪的要求) - 所以如果你能成功导入历史拯救公司的钱,我不明白为什么老板不会这样做。

答案 2 :(得分:4)

SVN与CVS相比很简单。 SVN是作为一种新软件而开发的,用于代替CVS来纠正CVS的一些问题。

我知道的一个问题是移动和重命名存储库中的文件的问题。如果您倾向于在代码库中进行大量重构,那么这是一个大问题。

更多内容见:维基百科的CVS Limitations 在这里:Criticism在维基百科上的VSS上 并进行比较:维基百科上的SVN Limitations

答案 3 :(得分:1)

您绝对可以保留从VSS到Vault的历史记录,这不在您的列表中,但我强烈推荐。如果其他开发人员习惯使用VSS,他们完全没有问题习惯Vault。它不是免费的,但它比许多替代品便宜很多。

至于说服他们搬家,VSS到现在为止应该提供自己的理由。我一直惊讶于我们的VSS存储库从未崩溃,但后来我几乎不知道其他开发人员几乎每天都在修复它。

答案 4 :(得分:1)

其他人已经提到为什么SVN是你阵容中最好的。另外你应该知道有比SVN更新更好的版本控制系统。

两个伟大的是Mercurial和Git。

答案 5 :(得分:0)

从CVS升级到SVN有很多原因。从2002年到2007年,我们使用CVS作为源代码控制。我会说在那段时间我们从未遇到过CVS的一个问题。真正的问题是,自1998年以来,CVS在功能开发方面没有向前发展。

SVN相对于CVS的最大好处必须是真正的自主提交。我们使用开源工具cvs2svn将我们所有的CVS项目移交给SVN。我们没有一个问题,并且保留了所有内容的完整历史。

VSS:这真的必须是有史以来最糟糕的微软产品之一。文件损坏,历史丢失和合并的主要问题是远离的主要原因。在这一点上,我非常确定Microsoft正在弃用VSS,转而使用Visual Studio Team Edition中内置的Team Tools。

答案 6 :(得分:0)

我最喜欢SVN的两件事:

  • 分支的制作方式简单明了。我永远无法完全围绕CVS分支。

  • 隐藏的本地副本意味着像“svn diff”和“svn log”这样的命令不必联系服务器。这使得在未连接的笔记本电脑上使用已签出的存储库变得更加容易。