Subversion与SourceSafe的性能

时间:2008-10-27 09:50:06

标签: svn version-control visual-sourcesafe

我们是一个由5名开发人员组成的分布式团队,负责大型集成项目。我们目前使用SourceSafe(是的,我知道它很糟糕,但它直到最近才工作,我们永远使用它)。我们最大的问题是最近的表现。签入和签出项目只需要永远,我们发现自己花了很多时间等待SourceSafe(是的,我们已经关闭了防病毒检查和所有其他性能提升trix - 它仍然很慢)。

我们现在正在考虑设置并将所有内容移动到Subversion。 与Subversion相比,SourceSafe在网络上的表现如何?我想历史并不重要(如果我们需要一个旧文件,我们可以回到VSS数据库)和实际上将文件移动到Subversion应该是一个问题 - 对吧?

除了实际的Subversion核心工具之外,我还希望对“必须拥有”的工具和附件有一些意见。

8 个答案:

答案 0 :(得分:13)

VSS中的签入在SVN中称为提交。此操作要快很多倍,因为SVN只会传输您对文件所做的更改(也称为“差异”),而VSS将发送整个文件并将其与服务器区分开来。

SVN中的签出(获得初始工作复制)与其他系统的比较有点慢,如果您使用的是http(s)且总体大小(> 100MB)文件。 SVN最坏的情况是很多文件和目录,因为HTTP传输比大文件要慢得多。

但是,我怀疑VSS会比SVN更快。 SVN的整体性能比VSS更快,更强大(没有数据库损坏)并且更容易理解。

Nice Tools是TortoiseSVN(Explorer插件),smartSVn(VSS-lookalike)和命令行(灵活) 正如Tigraine在我的评论中添加的:AnkhSVN(Visual Studio集成)和eclipse IDE的颠覆/ subclipse

答案 1 :(得分:9)

您可能还会发现this question相关。

效果

SVN和VSS中各个操作的时间差异主要在于SVN原则:操作时间应与更改的大小成比例,而不是项目的大小。最佳版本(VSS)与更新(SVN)最为明显。 VSS“获取最新版本”始终迭代项目中的所有文件,检查其状态。这需要很长时间。与此相比,SVN检查项目历史记录并仅操纵被触摸的文件。在典型的情况下,这是一个巨大的胜利,因为大多数情况下只触及几个文件。即使触摸文件,在SVN中传输更改要比在VSS中快得多,因为与VSS中的整个文件相比,只传输更改。对于Commits(Checkin)来说也是如此,在大型文件中进行小的更改时,SVN再次快得多。这也适用于二进制文件,因为SVN也可以与这些文件进行差分(使用XDelta作为其核心差分引擎)。

最重要的工具

对于Visual Studio开发人员,最重要的工具是:

  • TortoiseSVN - 通过Windows Shell访问存储库
  • AnkhSVN - Visual Studio集成
  • 有些人还推荐VisualSVN作为VS集成,但我认为对于AnkhSVN 2,整合已经足够好了

我甚至说使用TortoiseSVN和AnkhSVN你根本不需要安装“Subversion核心工具”。核心命令行工具非常有用,例如对于自动化,但对于一般的日常工作,我从不使用它们并且TortoiseSVN或AnkhSVN不需要安装它们。

网络访问

SVN本身支持通过Web进行访问,并且支持得非常好。对于VSS,您需要外部应用程序,虽然它们并不坏,但它们与原始环境不是1:1,而且它们的速度仍然有些缺乏。

如何转换

VSS2SVN是一种可以合理快速且合理地执行转换的工具。根据我们的经验,我强烈建议不要使用“稳定”版本,而是使用每日快照 - 它能够处理历史记录中的许多项目,这些项目使之前的版本完全失败。

我们已经使用了一个历史悠久的庞大数据库成功地使用了最近的每日构建,结果非常好。

答案 2 :(得分:4)

使用Subversion可以更轻松地进行远程访问。

如果你不关心保留你的历史,从VSS转向颠覆也很容易。您只需手动删除源代码控制绑定(* .scc文件)。

至于工具,你可能想要获得TortoiseSVN,也许是一个与Visual Studio一起使用的插件(如果这就是你正在使用的),如Ankh SVN(免费)。

答案 3 :(得分:2)

如果您确实关心保留历史记录,那么http://www.pumacode.org/projects/vss2svn将从一个存储库转换为另一个存储库。

我的成功非常有限,这也是我们仍然使用源安全的原因之一。

答案 4 :(得分:2)

Visual SourceSafe建立在文件共享之上。因此,当您在文件中预订时,一切都是使用文件系统完成的。因此,不是仅仅将文件文本发送到服务器,而是远程发生的一切VSS在访问vss服务器时从磁盘访问物理块。包括在共享磁盘目录中查找文件等...这比客户端服务器定制协议慢大约10倍。

有一个名为SourceOffSite的产品,它为VSS数据库添加了一个更快的前端,这使得VSS可以通过较慢的链接使用。

答案 5 :(得分:1)

根据我的经验,它会快得多。

我没有在VSS和SVN中使用相同的大型项目,但我在每个项目中都做了不同的项目,并将一个小项目从VSS迁移到SVN。

有些事情要快得多。特别是,检入/提交大量文件会产生一条警告信息:“这将花费很长时间,实际上可能无法正常工作?你还想尝试这样做吗?” (这不完全是它所说的)。

在VSS中实际上不可能实现大量更改 - 您必须执行多次小型提交,使项目处于暂时中断的状态(尽管它无论如何都没有原子提交,因此会发生在某些情况下无论如何。)

答案 6 :(得分:0)

我同意@relentless关于颠覆,但我更喜欢使用命令行。这需要一点点学习但是一旦你学会了你就会更快。

此外,如果性能是一个重要问题,您可能需要查看http://git.or.cz/,声称它非常快速可靠。

答案 7 :(得分:0)

TortoiseSVN确实是一个非常好的客户端,我在服务器上与Trac结合使用,可以访问存储库和一个不错的wiki /票证系统。

LiveCD - link