在 SVN 中存储二进制文件有不同的方法吗?如果是,它们是什么,以及如何修改存储选项?
我读到有 4 种方法可以在 SVN 中存储二进制文件:
其中哪些对时间效率最有用?以及如何设置 SVN 以使用这些方法中的任何一种?
谢谢,
奥德。
我有许多小型二进制文件和一些大型二进制文件。都是经常更换的。我目前正在研究 CVS 并很快切换到 SVN,我想知道存储二进制文件的方法。
我阅读了性能调整 Subversion(上面提到的)并发现它很有用,但没有制作示例,所以我不完全理解如何执行他建议的 4 种方法中的每一种。
我的基本问题是天气或默认值是否良好(它们是什么?)我首先考虑的是时间效率,然后是空间。谢谢 :)
最佳答案
您没有将 Subversion 设置为使用任何这些方法,而是指定将文件放入存储库时要使用的方法。并且通过“方法”,我不是指您提到的 4 个中的任何一个,而只是“导入”或“提交”,并且每次要存储新的数据时,您都必须不断告诉 Subversion 选择的方法将该文件修订到存储库中。
见 Performance tuning Subversion .
从那里的描述可以看出,为了使用“方法1”,压缩成tar然后使用import,他们必须自己将所有二进制文件压缩成一个.tar文件,然后使用Subversion的import命令来将文件添加到存储库中。
还要注意这里的警告,导入命令将文件存储为新文件,而不是作为先前版本的增量,因此如果对大文件的更改很少,它可能会节省时间,但不会节省空间。
Subversion 本身只执行提交和导入。提交是对现有文件的新修订,存储为一系列增量(或新文件的第一个修订,不是),而导入只是一个新文件。其他任何事情都必须自己做。
如果二进制文件只是偶尔更改,这可能值得进一步研究,但如果它们定期更改,我建议使用 commit 命令正常使用 Subversion。
另请注意,关于二进制文件的典型建议是,如果可能,您而不是二进制文件将源代码存储到生成这些二进制文件的任何地方,然后重新运行工具以重现实际的二进制文件.如果二进制文件需要时间或空间来重现,那么您才同时存储有问题的二进制文件。
二进制文件有一个不太好比较的问题,因此如果开发者 a 和 b 都检索到最新版本,然后开发者 a 在开发者 b 尝试做同样的事情之前提交了一个新修订,就会发生某种类型的冲突。开发人员 B 可能别无选择,只能尝试自己找出更改。
编辑 : 让我强调一下我所说的 COMMIT 和 IMPORT。
主要区别在于 COMMIT 将(假设您已经在存储库中拥有该文件)尝试将工作副本中的文件与以前的存储库版本进行比较,并仅存储更改。这将需要时间和内存来解决这些差异,但通常会导致您的存储库中的修订更改集很小。换句话说,与使用 IMPORT 命令相比,Subversion 服务器上的磁盘空间受到的影响较小。
另一方面,IMPORT 将导入新文件,就像您刚刚给它一个新文件并说“忘记前一个,只存储这个文件”,因此不会花费时间或内存来解决差异,但存储库中的结果变更集会更大。换句话说,与 COMMIT 命令相比,Subversion 服务器上的磁盘空间受到的影响更大,但 IMPORT 通常运行得更快。
您想要强加的任何其他工作流程都必须在 Subversion 之外完成。这包括操作系统中可用的 TAR 命令和压缩选项。如果您想使用“方法 1”,则您自己必须在将要导入的文件手动压缩到单个 .tar 文件中,然后再将其提供给 Subversion。你不能要求 Subversion 为你做任何这些。您当然可以制作脚本文件,使该过程在某种程度上自动化,但这仍然不是 Subversion 的问题。
我会用这个做一些严肃的测试,以确定 yield 是否真的值得你在 Subversion 工作流程上进行额外的工作。
关于svn - 在SVN中存储二进制文件的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1151912/