gpt4 book ai didi

git - git 如何处理压缩文件?

转载 作者:太空狗 更新时间:2023-10-29 14:35:27 25 4
gpt4 key购买 nike

我有一些 svg 文件,我想用 git 跟踪它们。但是,大多数软件都可以透明地处理 svgz(基本上就是 svg.gz)。因此,我正在考虑切换到 svgz 以节省磁盘空间。

git 的角度来看,将它们作为 svgz 而不是 svg 的优缺点是什么?

我天真的想法是,git diff 算法针对文本文件进行了优化,但在压缩后的对应文件上效果不佳。由于差异也被压缩,我假设整体方法对于文本文件非常有效,差异占用很少的磁盘空间。相反,对于压缩数据,它会倾向于在内部保存更大的文件,最终我预计在某个时候存储库可能最终会为压缩文件占用更多空间。

最佳答案

Git 使用 Xdelta 的变体在包文件中。这与文本差异(Git 使用 XDiff 的变体)是分开的。 Git 的所有存储对象也使用 Git 的 zlib deflate 压缩,即 fundamentally similar to gzip ,所以在这个特定级别,它几乎是 a wash .1

如果你的图片很大,或者你通过 .gitattributes-delta 将它们标记为“不要尝试增量压缩”,你可能想要预压缩它们,即,将它们存储为 svgz 文件,只是为了速度。2 如果它们较小,并且如果某些 svg 文件将 delta-对某些其他 svg 文件进行很好的压缩,您通常希望避免对它们进行预压缩,因为这将使 Git 无法进行 delta-压缩它们。

另见 Is repacking a repository useful for large binaries?Are Git's pack files deltas rather than snapshots?我对 What does git do when we do : git gc - git prune 的回答还有一点.可以说,底线是您必须进行一些测试,以了解哪种方法最适合您的特定情况。请注意,fetch 和 push 使用“瘦包”(其中对象根据已知存在于另一个 Git 中的基本对象进行压缩,但不包含在包文件中)来加速网络传输,这可能是更多 比节省磁盘空间更重要,所以也要考虑这一点。


1six of one, half a dozen of the other .

2即使 Git 和其他工具压缩它们所花费的时间相同,将它们标记为 -delta 也会让 Git 不考虑将它们打包,这将节省 git repack 时间。

关于git - git 如何处理压缩文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52131250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com