场景
假设我被迫把某些文件保存在 .zip
文件中。这些 ZIP 文件中的一些文件是小文本文件,经常更改,而其他文件比较大,但幸运的是比较静态(例如图像)。
如果想将这些 ZIP 文件放入 Git 存储库中,每个 ZIP 文件都会作为一个 blob 处理,所以每当我提交存储库时,存储库的大小都会增加...即使只有一个小文本文件发生了变化!
为什么这是现实的
Microsoft Word 2007/2010 的 .docx
文件和 Excel 的 .xlsx
文件都是 ZIP 文件...
我的要求
是否有可能告诉 Git 不要将 ZIP 文件视为文件,而应将其视为目录,并将其内容视为文件?
优点
- 存储库大小更小,传输/备份更快
- 使用 Git 显示 ZIP 文件的更改 将自动工作
但是,您说这是不可能的吗?
我意识到没有额外的元数据,这将导致某些模棱两可的情况:在 git checkout
上,Git 必须决定是否将 foo.zip/bar.txt
创建为常规目录中的文件或 ZIP 文件中的文件。然而,我认为可以通过配置选项来解决这个问题。
两种可能的实现方式(如果尚不存在)
- 在 Git 中使用库,如
minizip
或IO::Compress::Zip
- 以某种方式添加文件系统层,使得Git实际上将ZIP文件视为目录
.docx
文件的情况是有道理的,但在许多其他情况下,您可能希望使用 git 正常跟踪各个文件,并仅使用适当的构建工具(如make
)构建生成的.zip
。 - pixelistik