我们目前正在确定是否将CVS和VSS项目移至单个SVN服务器。
我已经使用SVN很长一段时间了,但是被迫使用CVS和VSS来完成工作。
请您帮我说明为什么搬到SVN比购买VSS更好?还有从CVS迁移到SVN的好处是什么?
我们在C#.NET / Java / Perl / Visual Basic中有项目。
除了成本差异之外,我还能对老板说些什么来说服他们转向svn。
有没有办法在转移到SVN时保留VSS和CVS的历史记录?
答案 0 :(得分:10)
这是需要大量细节的问题之一,但它将归结为“你为什么喜欢使用SVN?”以及你可以从“喜欢”列表中使用什么来呈现给你的老板。
我已经用过这三个了。我只能说出自己的经历和偏见。我的使用历史是VSS - > CVS - > SVN
<强> CVS 强>
优点:
缺点:
我的主要成果是客户端软件。我发现所有客户端软件都不连贯和脱节。我绝对讨厌使用它。
<强> VSS 强>
优点:
缺点:
<强>的Subversion 强>
优点:
缺点:
我猜你的老板想购买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”这样的命令不必联系服务器。这使得在未连接的笔记本电脑上使用已签出的存储库变得更加容易。