在SVN中存储二进制文件的方法

Ode*_*ded 6 svn methods binary storage

是否有不同的方法在SVN中存储二进制文件?如果是这样,它们是什么,以及我如何修改存储选项?

我读到有四种方法可以在SVN中存储二进制文件:

  1. 压缩焦油 - 进口 - 出口.
  2. 焦油 - 进口 - 出口.
  3. 进出口.
  4. 高效办理登机手续.

哪些对时间效率最有用?如何设置SVN使用这些方法?

谢谢,Oded.


我有许多小型二进制文件和一些大型文件.所有都经常更换.我目前正在研究CVS并很快切换到SVN,我想知道存储二进制文件的方法.

我阅读了性能调优Subversion(如上所述)并发现它很有用,但没有做出任何例子,所以我并不完全理解如何做他建议的4种方法.

我的基本问题是天气与否,默认值是好的(它们是什么?)我首先考虑的是时间效率,然后是空间.谢谢 :)

ang*_*son 3

您无需将 Subversion 设置为使用任何这些方法,您可以指定将文件放入存储库时使用哪种方法。我所说的“方法”并不是您提到的 4 种方法中的任何一种,而是指“导入”或“提交”,并且每次您想要存储新数据时,您都必须不断告诉 Subversion 选择的方法。将该文件修订到存储库中。

请参阅性能调整 Subversion

从那里的描述中可以看到,为了使用“方法1”,压缩为tar然后使用import,他们必须自己将所有二进制文件压缩为.tar文件,然后使用Subversion的import命令将文件添加到存储库中。

另请注意,导入命令将文件存储为新文件,而不是以前版本的增量文件,因此,如果对大文件提交的更改很少,则可能会节省时间,但不节省空间。

Subversion 本身只进行提交和导入。提交是对现有文件的新修订,存储为增量序列(或新文件的第一个修订,但事实并非如此),而导入只是一个新文件。其他的事情你都得自己做。

如果二进制文件只是偶尔更改,这可能值得更多研究,但如果它们定期更改,我建议像平常一样使用 Subversion 和 commit 命令。

另请注意,对于二进制文件,典型的建议是,如果可能的话,您可以将源代码存储到生成这些二进制文件的任何位置,而不是存储二进制文件,然后重新运行工具来重现实际的二进制文件。如果二进制文件的复制非常耗时或占用空间,那么您也只能存储有问题的二进制文件。

二进制文件存在不太好比较的问题,因此如果开发人员 a 和 b 都检索最新版本,然后开发人员 a 在开发人员 b 尝试执行相同操作之前提交新版本,则会发生某种类型的冲突。开发人员 B 可能别无选择,只能尝试自己解决更改。


编辑:让我强调一下提交和导入的含义。

主要区别在于,假设您已在存储库中拥有该文件,COMMIT 将尝试将工作副本中的文件与以前的存储库版本进行比较,并仅存储更改。这需要时间和内存来解决这些差异,但通常会导致存储库中出现较小的修订变更集。换句话说,与使用 IMPORT 命令相比,Subversion 服务器上的磁盘空间受到的影响更小。

另一方面,导入将导入新文件,就好像您刚刚给了它一个新文件并说“忘记前一个文件,只需存储此文件”,因此不会花费时间或内存来找出差异,但存储库中生成的变更集会更大。换句话说,Subversion 服务器上的磁盘空间比 COMMIT 命令受到的影响更大,但 IMPORT 通常会运行得更快。

您想要实施的任何其他工作流程都必须在 Subversion 之外完成。这包括操作系统中可用的 TAR 命令和压缩选项。如果您想使用“方法 1”,您自己必须手动将要导入的文件压缩到单个 .tar 文件中,然后再将其提供给 Subversion。您不能要求 Subversion 为您做任何事情。您当然可以制作脚本文件来稍微自动化该过程,但这仍然不是 Subversion 问题。

我会对此进行一些认真的测试,以确定所获得的收益是否真的值得您在 Subversion 工作流程中进行额外的工作。