5

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

我们现在正在考虑设置并将我们所有的东西转移到 Subversion。与 Subversion 相比,Web 上的 SourceSafe 的性能如何?我猜想移动历史并不是那么重要(如果我们需要一个旧文件,我们可以返回到 VSS 数据库)并且将文件实际移动到 Subversion 应该是一个问题 - 对吧?

除了实际的 Subversion 核心工具之外,我还想对“必须拥有”的工具和附加组件进行一些输入。

4

8 回答 8

13

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

如果您使用的是 http(s) 并且文件的总大小很大 (>100MB),则 SVN中的签出(获取初始工作副本)与其他系统相比有些慢。SVN 最坏的情况是很多文件和目录,因为 HTTP 传输将比大的单个文件慢得多。

但是,我怀疑 VSS 会比 SVN 快。SVN 的整体性能比 VSS 更快、更健壮(无数据库损坏)且更易于理解。

不错的工具是 TortoiseSVN(Explorer 插件)、smartSVn(VSS-lookalike)和命令行(灵活),因为 Tigraine 在我的评论中添加:AnkhSVN(Visual Studio 集成)和 Eclipse IDE 的颠覆性/subclipse

于 2008-10-27T10:35:34.613 回答
8

您可能还会发现这个问题很相关。

表现

SVN 和 VSS 中单个操作需要多长时间的主要区别在于 SVN 原则:操作时间应与更改的大小成正比,而不是与项目的大小成正比。这在获取最新版本 (VSS) 与更新 (SVN) 中最为明显。VSS“获取最新版本”总是遍历项目中的所有文件,检查它们的状态。这需要很长时间。与此相比,SVN 会检查项目历史记录并仅操作被触及的文件。在典型的场景中,这是一个巨大的胜利,因为通常只触及几个文件。即使触摸文件,在 SVN 中传输更改也比在 VSS 中快得多,因为与 VSS 中的整个文件相比,仅传输更改。Commits (Checkin) 也是如此,SVN 在对大文件进行小的更改时速度要快得多。

最重要的工具

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

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

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

网络访问

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

如何转换

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

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

于 2008-10-27T10:32:37.647 回答
4

使用 Subversion 远程访问要容易得多。

如果您不关心保留历史记录,那么从 VSS 迁移到 subversion 也很容易。您只需手动删除源代码控制绑定(*.scc 文件)。

至于工具,您可能想要获取 TortoiseSVN,也许还需要一个用于 Visual Studio(如果您正在使用的话)的插件,例如 Ankh SVN(免费)。

于 2008-10-27T09:57:09.760 回答
2

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

我在这方面取得的成功非常有限,这也是我们仍然使用源代码安全的原因之一。

于 2008-10-27T10:00:05.760 回答
2

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

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

托尼

于 2008-10-27T11:16:36.807 回答
1

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

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

有些事情要快得多。特别是,签入/提交大量文件会产生一条警告消息,类似于“这将花费很长时间并且可能实际上不起作用?您是否仍要尝试这样做?” (这并不完全是它所说的)。

在 VSS 中实际上不可能提交大量更改 - 您必须进行多次小提交,使项目处于暂时中断的状态(尽管它无论如何都没有原子提交,所以无论如何都会发生这种情况) .

于 2008-10-27T10:08:23.263 回答
0

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

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

于 2008-10-27T10:05:40.617 回答
0

TortoiseSVN 确实是一个非常好的客户端,我将它与服务器上的Trac结合使用,以对存储库和一个不错的 wiki/ticket 系统进行 Web 访问。

LiveCD链接

于 2008-10-27T10:30:52.890 回答