我们是一个由5名开发人员组成的分布式团队,从事相当大的集成项目.我们目前使用SourceSafe(是的,我知道它很糟糕,但它直到最近才工作,我们永远使用它).我们最大的问题是最近的表现.签入和签出项目只需要永远,我们发现自己花了很多时间等待SourceSafe(是的,我们已经关闭了防病毒检查和所有其他性能提升trix - 它仍然很慢).
我们现在正在考虑设置并将所有内容移动到Subversion.与Subversion相比,SourceSafe在Web上的性能如何?我想历史并不重要(如果我们需要一个旧文件,我们可以回到VSS数据库)并且实际将文件移动到Subversion应该是一个问题 - 对吧?
我还想对除了实际的Subversion核心工具之外的"必须具备"的工具和附加组件有一些输入.
VSS 的签入在SVN中称为commit.此操作要快很多倍,因为SVN只会传输您对文件所做的更改(也称为"差异"),而VSS将发送整个文件并将其与服务器区分开来.
如果您正在使用http(s)并且文件总体大(> 100MB),则SVN中的签出(获取初始工作副本)与其他系统的比较有点慢.SVN最坏的情况是很多文件和目录,因为HTTP传输比大文件要慢得多.
但是,我怀疑VSS会比SVN更快.SVN的整体性能比VSS更快,更强大(没有数据库损坏)并且更容易理解.
好的工具是TortoiseSVN(Explorer插件),smartSVn(VSS-lookalike)和命令行(灵活),因为Tigraine在我的评论中添加:AnkhSVN(Visual Studio集成)和eclipse IDE的颠覆/ subclipse
您可能还会发现此问题相关.
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是一个工具,它执行转换相当快,相当不错.根据我们的经验,我强烈建议不要使用"稳定"构建,而是使用每日快照 - 它能够处理历史记录中的许多项目,这些项目使之前的构建完全失败.
我们使用了一个历史悠久的庞大数据库成功地使用了最近的每日构建,结果非常好.