Сценарий
Представьте, что я вынужден работать с некоторыми из моих файлов, которые всегда хранятся внутри .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-файл. Однако я думаю, это можно решить с помощью параметров конфигурации.
Две идеи, как это можно сделать (если такового еще нет)
- используя библиотеку, такую как
minizip
илиIO::Compress::Zip
внутри git - каким-то образом добавляя слой файловой системы, чтобы git фактически видел zip-файлы как каталоги, чтобы начать с
.docx
файлами имеет смысл, но во многих других случаях вы можете рассмотреть возможность отслеживания отдельных файлов, как правило, с помощью git и только построения результирующего.zip
с помощью соответствующего инструмента сборки, такого какmake
. - person pixelistik   schedule 28.11.2013UNX
. Он также рекурсивен: он содержитBLX
файл иDFX
файл, которые являются архивами, которые соответствуют «бизнес-уровню» и «основанию данных» соответственно. Я тоже хотел бы найти решение. - person craig   schedule 03.03.2017