Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SVN提交和签出的包装器,用于压缩_Svn_File_Binary_Compression - Fatal编程技术网

SVN提交和签出的包装器,用于压缩

SVN提交和签出的包装器,用于压缩,svn,file,binary,compression,Svn,File,Binary,Compression,可能重复: 同一作者的准确副本: 嗨 我想构建一个脚本来包装提交和签出问题。 我想在提交前压缩二进制文件,并在签出后立即解压缩 怎么做?由于没有增量比较,是否首选导入命令而不是提交?我知道这不会节省空间,但还是 谢谢, Oded。压缩文件实际上会增加SVN存储库占用的空间 为什么??SVN服务器尝试只存储二进制扩散产生的增量。因此,通常只需要存储文件中已更改的部分 但是,如果压缩文件,那么最轻微的更改将完全改变压缩结果。每次提交时,SVN服务器都需要存储完整的压缩文件,而不仅仅是更改的部分。

可能重复:

同一作者的准确副本


我想构建一个脚本来包装提交和签出问题。 我想在提交前压缩二进制文件,并在签出后立即解压缩

怎么做?由于没有增量比较,是否首选导入命令而不是提交?我知道这不会节省空间,但还是

谢谢,
Oded。

压缩文件实际上会增加SVN存储库占用的空间

为什么??SVN服务器尝试只存储二进制扩散产生的增量。因此,通常只需要存储文件中已更改的部分


但是,如果压缩文件,那么最轻微的更改将完全改变压缩结果。每次提交时,SVN服务器都需要存储完整的压缩文件,而不仅仅是更改的部分。

压缩文件实际上会增加SVN存储库占用的空间

为什么??SVN服务器尝试只存储二进制扩散产生的增量。因此,通常只需要存储文件中已更改的部分


但是,如果压缩文件,那么最轻微的更改将完全改变压缩结果。每次提交时,SVN服务器都需要存储完整的压缩文件,而不仅仅是更改的部分。

Subversion的二进制增量算法、跟踪文件中的压缩以及服务器自身内部使用的压缩之间的交互可能很复杂

这里有一个例子 我把一个x86Emacs二进制文件(大约10MB,4MB用gzip压缩)的副本作为我的“二进制文件”。我写了一个小程序,通过在随机位置用随机数据覆盖4个连续字节来“编辑”二进制文件

然后,我编写了三个脚本,以以下三种方式模拟100次提交:

该文件在存储库中用gzip压缩 对于每个重复:我们解压缩文件,然后执行编辑,然后重新压缩,然后签入

最终存储库大小:9.6MB

(这比我预期的要好,直到我意识到由于gzip的工作方式,随机编辑之前的字节(平均为文件的一半)将与上一版本相同,即使在压缩之后也是如此。)

该文件未在存储库中压缩 对于每个重复:我们只需执行编辑,然后签入更改

最终存储库大小:5.1 MB

每次都从零开始导入该文件 对于每个重复:我们将二进制文件(不使用svn copy)复制到一个新文件中,编辑这个副本,添加它并提交更改。这相当于导入,因为与文件的上一个副本没有历史连接

最终存储库大小:403MB

为了让您了解Subversion的服务器端压缩,我重复了这个测试,只是这次在每次添加和提交二进制文件之前,我压缩了客户端的二进制文件

最终存储库大小:392 MB

所以,无论subversion在做什么,它看起来都和gzip一样好


你的问题听起来像是在假设客户端的压缩将帮助你。它很可能不会这样做

根据我的经验,只有在以下情况下才值得这样做:

  • 文件很大
  • 您使用的压缩比Subversion管理的压缩要严格得多。(例如,如果您使用的是bzip2或lzma)
  • 该文件很少被编辑

  • Subversion的二进制增量算法、跟踪文件中的压缩和服务器自身内部使用的压缩之间的交互可能很复杂

    这里有一个例子 我把一个x86Emacs二进制文件(大约10MB,4MB用gzip压缩)的副本作为我的“二进制文件”。我写了一个小程序,通过在随机位置用随机数据覆盖4个连续字节来“编辑”二进制文件

    然后,我编写了三个脚本,以以下三种方式模拟100次提交:

    该文件在存储库中用gzip压缩 对于每个重复:我们解压缩文件,然后执行编辑,然后重新压缩,然后签入

    最终存储库大小:9.6MB

    (这比我预期的要好,直到我意识到由于gzip的工作方式,随机编辑之前的字节(平均为文件的一半)将与上一版本相同,即使在压缩之后也是如此。)

    该文件未在存储库中压缩 对于每个重复:我们只需执行编辑,然后签入更改

    最终存储库大小:5.1 MB

    每次都从零开始导入该文件 对于每个重复:我们将二进制文件(不使用svn copy)复制到一个新文件中,编辑这个副本,添加它并提交更改。这相当于导入,因为与文件的上一个副本没有历史连接

    最终存储库大小:403MB

    为了让您了解Subversion的服务器端压缩,我重复了这个测试,只是这次在每次添加和提交二进制文件之前,我压缩了客户端的二进制文件

    最终存储库大小:392 MB

    所以,无论subversion在做什么,它看起来都和gzip一样好


    你的问题听起来像是在假设客户端的压缩将帮助你。它很可能不会这样做

    根据我的经验,只有在以下情况下才值得这样做:

  • 文件很大
  • 您使用的压缩比Subversion管理的压缩要严格得多。(例如,如果您使用的是bzip2或lzma)
  • 该文件很少被编辑

  • 这似乎与你之前的问题非常相似:你能给出一个你试图解决的问题的指示吗。听起来可能是“提交和检索非常大的文件花费的时间太长”这似乎是v