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


8

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

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

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

Ответы:


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 - это десятки мегабайт в секунду, но они могут плохо помешать работе с малым объемом памяти.
Эроен
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.