Я некоторое время использовал git для управления исходным кодом, и мне действительно это нравится. Поэтому я начал исследовать использование git для хранения большого количества бинарных файлов, которые, как я считаю, не являются чашкой чая git. Так как насчет больших текстовых файлов? Кажется, что git должен с этим справиться, но у меня тоже проблемы с этим.
Я тестирую это, используя текстовый файл в стиле mbox размером 550 МБ. Я сделал новый репо, чтобы сделать это. Вот мои результаты:
- git add и git commit - общий размер репо 306mb - репо содержит один объект размером 306mb
- добавить одно электронное письмо в файл почтового ящика и git commit - общий размер репо составляет 611 МБ - репо содержит два объекта размером 306 МБ каждый
- добавить еще одно электронное письмо в файл почтового ящика и git commit - общий размер репо составляет 917mb - репо содержит три объекта, каждый размером 306mb
Таким образом, каждый коммит добавляет новую копию файла почтового ящика в репозиторий. Теперь я хочу попытаться уменьшить размер репо до чего-то управляемого. Вот мои результаты:
- git repack -adf - общий размер репо составляет 877 МБ - репо содержит один файл пакета размером 876 МБ
- git gc --aggressive - общий размер репо составляет 877 МБ - репо содержит один файл пакета размером 876 МБ
Я бы ожидал, что смогу уменьшить репо до 306 Мб, но я не могу понять, как. Все, что больше, похоже на большое количество дублирующихся данных.
Я надеюсь, что репо увеличится только по размеру нового полученного письма, а не по размеру всего почтового ящика. Здесь я не пытаюсь управлять электронной почтой с контролем версий, но мне кажется, что я сильно сдерживаюсь от использования ночного скрипта для постепенного резервного копирования домашних каталогов пользователей.
Какой-нибудь совет, как избежать увеличения размера репо при вставке небольшого количества текста в конец очень большого текстового файла?
Я смотрел на bup и git Annex, но я действительно хотел бы придерживаться простого старого git, если это возможно.
Спасибо за помощь!