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

时间:2009-07-20 06:01:28

标签: svn binary methods storage

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

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

  1. 压缩的tar - import - export。
  2. 焦油 - 进口 - 出口。
  3. import - export。
  4. 高效办理登机手续。
  5. 哪些对时间效率最有用?以及如何设置SVN以使用这些方法中的任何一种?

    谢谢, 奥德。


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

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

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

2 个答案:

答案 0 :(得分:3)

您没有将Subversion设置为使用任何这些方法,您可以指定将文件放入存储库时使用的方法。并且通过“方法”,我并不是指你提到的4个中的任何一个,而只是“导入”或“提交”,并且你将不得不告诉Subversion每次你想要存储一个新的时候选择的方法将该文件修订到存储库中。

请参阅Performance tuning Subversion

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

另请注意,在那里,import命令将文件存储为新文件,而不是作为先前版本的增量,因此如果对大文件的更改很少,则可能节省时间,但不节省空间

Subversion本身只能提交和导入。提交是对现有文件的新修订,存储为增量序列(或新文件的第一个修订版,不是),导入只是一个新文件。还有其他你自己要做的事情。

如果二进制文件只是偶尔更改,这可能值得进一步研究,但如果它们经常更改,我建议使用提交命令正常使用Subversion。

另请注意,二进制文件的典型建议是,如果可能,您将代替二进制文件将源代码存储到生成这些二进制文件的任何内容中,然后重新运行工具以重现实际二进制文件。如果二进制文件需要时间或空间来重现,那么您是否也存储了有问题的二进制文件。

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


编辑:让我强调COMMIT和IMPORT的含义。

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

另一方面,IMPORT将导入新文件,就像你刚给它一个新文件并说“忘记前一个,只存储这个文件”,因此没有时间或内存将用于工作消除差异,但存储库中产生的变更集会更大。换句话说,Subversion服务器上的磁盘空间将比使用COMMIT命令更受影响,但IMPORT通常运行得更快。

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

我会做一些严肃的测试,以确定这些收益是否真的值得你将在Subversion工作流程上施加的额外工作。

答案 1 :(得分:1)

你能更详细地描述一下你的情况吗?

你有几个小的二进制文件都在一起变化吗?一些独立变化的大型二进制文件?您的文件经常更改吗?

你真的发现默认值不够好吗?我总是以与正常相同的方式添加二进制文件,并发现它只是起作用。就像任何性能问题一样,除非你有充分的理由,否则我不会试图让事情复杂化 - 在这种情况下,请与我们分享这个理由。