场景
想象一下,我被迫使用总是存储在其中的某些文件 .zip
文件文件。zip内的某些文件是小的文本文件,并且经常更改,而其他文件则较大,但幸运的是,它们是静态的(例如图像)。
如果我想将这些zip文件放在 git
存储库中,则每个zip都被视为一个blob,因此每当我提交存储库时,该zip文件的大小都会增加...即使内部只有一个小文本文件发生了变化!
为什么这很现实
MS 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内部的库 - 以某种方式添加文件系统层,以便git实际上将zip文件视为目录以
.docx
文件是有道理的,但在其他许多情况下,你可能要考虑使用Git通常跟踪单个文件,只有建设所产生的.zip
使用像一个合适的构建工具make
。