我们最近已经转移到SVN用于我们的代码版本控制系统,它一直很好地为我们服务。我们有一个不寻常的要求,即我们必须能够在产品推出30年后运行我们的代码(和测试)工具链。这意味着我们需要归档整个工具链,包括IDE,编译器,许可服务器和工程。我们天真的方法是使用我们的工具在SVN中创建一个文件夹,以及版本的子文件夹(因为不同的项目可能使用同一工具的不同版本创建其生产版本。)
但是,在我看来,我们最终会在代码旁边存储数十GB或更多这些工具。我发现一些参考资料,旧版本的SVN在使用大型二进制文件的存储库中遇到困难,但这似乎已得到修复。我无法通过这种结构找到有关SVN性能的最新指标。
天真的方法是否有任何缺点,除了在存储库变大时备份存储库的困难?
到目前为止我看到的替代方案是: 1.为构建工具创建单独的SVN存储库 2.为构建工具创建一个网络驱动器,并保留其校验和的索引,以便在将来识别它们。
我意识到这可能有点主观,所以我最感兴趣的是可用的任何客观指标。
答案 0 :(得分:3)
简短的回答是 - 不要。 SVN(与其他类似)是一个源代码版本控制系统,它从来没有设计为像你提到的大型二进制文件一样工作。你最好建立一个虚拟环境,把你的工具链和其他工具链放在VM文件中,然后把这些安全的地方以及VM主机程序存放起来。
答案 1 :(得分:0)
我显然不会将IDE存储在SVN存储库中,只是因为您不能仅将visual studio文件夹复制到某个目录并让它再次运行。您必须将安装DVD归档到某处。但由于这不会改变,您可以使用普通的备份位置(磁带,磁盘等)。但问题还在于:如果下一个操作系统不再支持这个IDE怎么办?
因此,我的想法是创建一个虚拟机,其中所有内容都已安装并在已发布软件的状态下运行,然后将此图像保存在某处。因为如果你需要从现在开始运行30年,那么你可能无法在明天的操作系统上运行今天的安装程序。更好的是,把整台计算机放在安全的地方。并希望它在30年内仍然有效。正如你(我猜)不需要能够恢复每个版本,但只需要恢复已发布的版本,对我来说整个事情看起来不像是SVN的问题。
答案 2 :(得分:0)
SVN确实具有为您提供真实版本管理和审计跟踪的优势,如果这很重要的话。我将为这些对象创建一个单独的repo,并使用svn import
来获取内容。您可以使用非常有限的数据子集创建工作副本(如果需要提取内容)。否则,您可以使用Web浏览器浏览仓库。在这些限制下,您不应该遇到任何问题 - SVN基本上是一个存档系统,版本管理位于顶层。