Почему операции с git становятся медленными, когда репо становится больше

Я знаю, что мерзавец станет медленным, когда репо станет больше.
Но почему?
Поскольку git хранит файлы в виде отдельных каталогов и файлов в .git, я не могу выяснить, почему операции замедляются. Давайте посмотрим на операцию фиксации. Недавно я клонировал репозиторий webkit, и я ветвился с master, затем я передал 2k файл в ветку. Но я чувствую, что это становится медленнее, чем на моем маленьком репо.
Поскольку я не прочитал исходный код git, я предполагаю, что операция фиксации ставит под угрозу сохранение файла на диске, вставку журнала фиксации, обновление индекса и обновление HEAD до значения sha файла.

Пишем быстро.
Вставка выполняется быстро (я полагаю, если действие вставки - добавить журнал в файл)
Обновление индекса происходит быстро.
Обновление HEAD происходит быстро.

И почему это медленно? Кто-нибудь может проиллюстрировать это мне?
Благодарю.

Некоторые ответы полезны, но не очень убедительны, будет здорово предоставить некоторые фрагменты кода для поддержки вас.

1 ответ

Решение

Фиксация дерева должна быть постоянной во времени, поскольку для этого нужно только создать новый объект фиксации (git write-tree) и обновить HEAD ссылка

Я делал тесты разных SCM в прошлом и git commit действительно не зависели размер дерева, размер хранилища, длина истории и т. д.

Другие вопросы по тегам