Почему операции с git становятся медленными, когда репо становится больше
Я знаю, что мерзавец станет медленным, когда репо станет больше.
Но почему?
Поскольку git хранит файлы в виде отдельных каталогов и файлов в .git, я не могу выяснить, почему операции замедляются. Давайте посмотрим на операцию фиксации. Недавно я клонировал репозиторий webkit, и я ветвился с master, затем я передал 2k файл в ветку. Но я чувствую, что это становится медленнее, чем на моем маленьком репо.
Поскольку я не прочитал исходный код git, я предполагаю, что операция фиксации ставит под угрозу сохранение файла на диске, вставку журнала фиксации, обновление индекса и обновление HEAD до значения sha файла.
Пишем быстро.
Вставка выполняется быстро (я полагаю, если действие вставки - добавить журнал в файл)
Обновление индекса происходит быстро.
Обновление HEAD происходит быстро.
И почему это медленно? Кто-нибудь может проиллюстрировать это мне?
Благодарю.
Некоторые ответы полезны, но не очень убедительны, будет здорово предоставить некоторые фрагменты кода для поддержки вас.
1 ответ
Фиксация дерева должна быть постоянной во времени, поскольку для этого нужно только создать новый объект фиксации (git write-tree
) и обновить HEAD
ссылка
Я делал тесты разных SCM в прошлом и git commit
действительно не зависели размер дерева, размер хранилища, длина истории и т. д.