nor*_*ok2 3 git compressed-files
我有一些svg文件希望通过git. 但是,大多数软件都可以透明处理svgz(基本上是svg.gz)。因此,我正在考虑切换到svgz以节省磁盘空间。
将它们作为svgz而不是svg从一个git角度来看有什么优点和缺点?
我天真的想法是git 差异算法针对文本文件进行了优化,并且在它们的压缩副本上效果不佳。由于差异也被压缩,我认为整体方法对于文本文件非常有效,其中差异占用的磁盘空间非常少。相反,对于压缩数据,它倾向于在内部保存更大的文件,最终我预计存储库最终可能会为压缩文件占用更多空间。
Git在包文件中使用Xdelta的变体。这与文本差异(Git 使用XDiff的变体)是分开的。Git 存储的所有对象也都使用 Git 的 zlib deflate 进行压缩,这在根本上类似于 gzip,因此在这个特定级别上,它几乎是一个 Wash。1
如果您的图像很大,或者您通过.gitattributeswith将它们标记为“不要尝试增量压缩” -delta,则您可能希望预压缩它们,即将它们存储为svgz文件,只是为了速度。2 如果它们更小,并且如果某些svg文件可以很好地对其他svg文件进行增量压缩,您通常希望避免预压缩它们,因为这将使Git无法对它们进行增量压缩。
另请参阅重新打包存储库对大型二进制文件有用吗?和Git 的包文件是增量而不是快照吗? 在我对git do when we do 的回答中还有更多内容:git gc-git prune。最重要的是,您必须进行一些测试试验,以了解哪种方法最适合您的特定情况。请注意,fetch 和 push 使用“瘦包”(其中对象根据已知存在于其他 Git 中但未包含在包文件中的基础对象进行压缩)来加速网络传输,这可能比节省磁盘空间更重要,所以也要考虑一下。
1或六个之一,另一个六个。
2即使Git和其他工具压缩它们所用的时间相同,标记它们-delta也会让Git不考虑它们进行打包,这样会节省git repack时间。
| 归档时间: |
|
| 查看次数: |
787 次 |
| 最近记录: |