Сценарий
Представьте, что мне приходится работать с некоторыми моими файлами, которые всегда хранятся в файлах .zip
. Некоторые из файлов внутри zip - небольшие текстовые файлы и часто меняются, в то время как другие больше, но, к счастью, довольно статичны (например, изображения).
Если я хочу разместить эти zip файлы внутри репозитория git
, каждый почтовый индекс обрабатывается как blob, поэтому всякий раз, когда я фиксирую репозиторий, увеличивается размер zip файла... даже если только один небольшой текстовый файл внутри изменено!
Почему это реалистично
MS Word 2007/2010 .docx
и файлы Excel .xlsx
являются ZIP файлами...
Что я хочу
Есть ли какой-нибудь способ сообщить git
не обрабатывать zips как файлы, а скорее как каталоги и обрабатывать их содержимое в виде файлов?
Преимущества
- значительно меньший размер репо, т.е. более быстрая передача/резервное копирование
- Показать изменения с помощью Git для zip будет автоматически работать
Но он не может работать, вы говорите?
Я понимаю, что без дополнительных метаданных это приведет к некоторой двусмысленности: на git checkout
Git нужно будет решить, следует ли создавать foo.zip/bar.txt
в качестве файла в обычном каталоге или в zip файле. Однако это можно было бы решить с помощью опций конфигурации, я бы подумал.
Две идеи о том, как это можно сделать (если он еще не существует)
- используя библиотеку, такую как
minizip
илиIO::Compress::Zip
внутри git - каким-то образом добавляет уровень файловой системы, так что Git фактически видит zip файлы в качестве каталогов для начала с