我处于不得不在 git 中存储一些二进制文件的不幸情况,
但是我可以选择数据在磁盘上的存储方式——在 Git 中(以我们自己的格式,只有构建系统需要读取)。
我想避免过多地谈论细节,因为我认为它不那么重要 - 但为了提供一些上下文,这些是许多图标文件,但同样的问题也适用于许多小型声音文件或 3d 模型。
将这些文件转换为一个大图像将是一个构建步骤,因此可以将图像存储在 git 中。
- 二进制压缩(例如,PNG(图像)、FLAC(声音))
- 二进制未压缩(例如,PPM(图像)、未压缩 WAV(声音))
- 二进制数据的 ASCII 表示(例如,mime 编码、XPM(图像))
让我们假设某些文件偶尔会发生变化——因此避免为像素的每一个小变化存储一个新的二进制 blob——会很好。
我有兴趣知道:
- 每次二进制文件更改(甚至几个字节)时,哪些选项将存储一个全新的二进制 blob。
- git diff 未压缩二进制数据是否比压缩数据更好(即使对未压缩数据进行少量编辑,也可能会发生很大变化)。
- 与一个大型二进制文件相比,我会假设长期存储许多小型二进制文件的开销较小,假设只有一些文件被定期修改,git 可以有效地处理对大型二进制文件的小更改吗?
假设无法完全避免使用二进制文件,所有事情都考虑了避免大型 git repo(因为对二进制文件进行编辑)的最佳选择是什么?