Почему Git так медленно работает с большими файлами?

8

Я пытался использовать Git для управления своими фотографиями (резервное копирование / делать снимки). Вся библиотека занимает несколько ГБ. Большинство файлов имеют размер JPG 2-3M. Когда я добавлял файлы в хранилище, казалось, что это заняло несколько дней. Загрузка процессора всегда была около 100%.

Есть ли причина, почему git должен работать медленно на больших файлах?

PS Я знаю, что Git не был предназначен для этого.

woodings
источник

Ответы:

7

Git по умолчанию сжимает файлы. JPEG по умолчанию уже сжаты. Дело не в том, что это большие файлы, а в том, что это сжатые файлы.

Вы заметите тот же эффект, добавляя ZIP-файлы в репозиторий git.

РЕДАКТИРОВАТЬ: есть интересная тема на /programming/7102053/git-pull-without-remotely-compressing-objects о сжатии.

Сообщество
источник
1
Как я могу сказать git не сжимать файлы? Мне не обязательно нужна космическая эффективность. Я хочу, чтобы это было как можно быстрее. Спасибо!
лес
2
Есть множество переключателей, с которыми вы можете играть git config, включая core.compressionи pack.window. Поскольку я никогда не пробовал запускать git без сжатия, YMMV. Пожалуйста, опубликуйте то, что вы обнаружили, чтобы помочь всем нам учиться на вашем опыте.
@Eroen, вы делаете хорошую мысль. Я проголосовал за ваш комментарий.
2
Git также создает (и проверяет) хэш sha1 каждого файла каждый раз, когда он его использует, что может занять слишком много времени для больших файлов.
Эроен
3
@RandolphWest: Хорошо, но неправильно. Сжатие zlib может быть отключено с помощью $ git set core.compression 0. sha1 - это десятки мегабайт в секунду, но они могут плохо помешать работе с малым объемом памяти.
Эроен