Zip文件夹到SVN?

时间:2017-05-04 08:33:54

标签: c# svn zip

这听起来可能是一个愚蠢的问题,但我只想澄清一些问题。我已将文件夹压缩并将其添加到我的SVN存储库中。这样做好吗?或者我应该上传解压缩的文件夹吗?

我只需要确定!

1 个答案:

答案 0 :(得分:1)

如果您要更改目录的内容,则应将其解压缩存储。将它放在 zip 文件中会更快地耗尽服务器上的存储空间,就像您将 zip 的每个版本都作为单独的文件存储在服务器上一样。


Zip format 有一个很酷的地方:存档中的每个文件都占用一些字节段,并且独立于所有其他文件进行压缩/解压缩。结果,如果您有一个 100 MB 的 zip,并修改其中的两个文件,每个文件的大小为 1 MB,那么新的 zip 将最多包含 2 MB 的新数据,其余 98 MB 最有可能是字节精确副本一些旧拉链的碎片。因此,理论上可以将小的 in-zip 变化表示为小增量。但是在实践中存在很多问题。

首先,您必须确保没有重新压缩未更改的文件。如果您使用不同的程序、程序版本、压缩设置等从头开始制作第一个 zip 和第二个 zip,您可以在未更改的文件上获得略有不同的压缩。结果,zip 文件中的实际字节数将有很大差异,任何对小增量的希望都将破灭。更好的方法是获取第一个 zip,然后在其中添加/删除文件。

然而,主要问题是 SVN 如何存储增量。 As far as I know,SVN 使用 xdelta algorithm 来计算增量。如果给定无限内存,该算法完全能够检测 zip 文件中的相等块。问题是 SVN 使用内存限制版本,窗口为 size = 100 KB。即使您只是从文件中删除超过 100 KB 的段,SVN 的 delta 计算也会中断,文件的其余部分将简单地复制到 delta 中。最有可能的是,delta 占用的空间与整个文件占用的空间一样多。