2009-07-20 103 views
6

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

我看,有4种方式来存储SVN二进制文件:

  1. 压缩的tar格式 - 导入 - 导出。
  2. 焦油 - 进口 - 出口。
  3. 进出口。
  4. 高效办理登机手续。

其中哪些是时间efficiancy最有用?以及如何设置SVN以使用这些方法中的任何一种?

感谢, 俄德。


我有许多小型的二进制文件和一些大型的文件。所有这些都经常改变。我目前正在开发CVS并很快切换到SVN,我想知道如何存储二进制文件。

我读性能优化的Subversion(如上所述),并发现它有用,但没有做的例子,所以我没有完全明白怎么做各的4种方式,他建议。

我的基本问题是天气还是不违约是好的(和它们是什么?)我首先考虑的是时间效率和空间,然后。谢谢:)

回答

3

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

参见Performance tuning Subversion

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

另外需要注意的是,导入命令将文件存储为新文件,而不是作为之前版本的增量,因此,如果对大文件进行少量更改,它可能会比较省时,但不会节省空间承诺。

Subversion本身只提交和导入。提交是对现有文件的新修订,作为一系列增量(或新文件的第一个修订版本)存储,而导入只是一个新文件。除此之外,你必须自己做。

如果二进制文件现在才再变,这可能是值得期待更进,但如果是定期更换,我只是使用Subversion为正常,commit命令提示。

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

二进制文件的问题并不是真的很好比较,因此如果开发人员a和b都检索最新版本,然后开发人员a在开发人员b尝试做同样的事情之前提交新的修订,某种类型的冲突将发生。开发商B可能没有选择,只能尝试自己找出变化。


编辑:我想强调,我的意思COMMIT和导入。

的主要区别是,提交会,假设你已经在仓库中的文件已经,尝试diff的文件中对以前的版本库工作拷贝,只存储改变。这需要时间和内存,以便找出这些差异,但通常会导致版本库中的修订版本更改。换句话说,Subversion服务器上的磁盘空间比IMPORT命令的影响要小。

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

要施加任何其他的工作流程有颠覆之外的工作要做。这包括操作系统中可用的TAR命令和压缩选项。如果你想使用“方法1”,你自己必须手动压缩你想要导入的文件到一个单一的.tar文件,然后再提交给Subversion。你不能要求Subversion为你做这些。你当然可以创建脚本文件来使这个过程自动化一些,但是,这仍然不是一个Subversion问题。

我会做这个一些严重的测试,以找出是否收益实际上是值得额外的工作,你会强加给你的Subversion工作流程。

+0

你基本上说只有2个选项是IMPORT和COMMIT? 并且导入可以选择导入压缩的tar文件(压缩manualy)还是常规文件? 哪一个是时间效率? 谢谢:) – Oded 2009-07-20 07:32:46

1

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

你有几个短小的二进制文件,所有的改变在一起吗?几个大的二进制文件独立更改?你的文件经常改变吗?

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