#git #big-o #space-complexity
#git #big-o #пробел-сложность
Вопрос:
Я пытаюсь понять, как работает Git.
Если бы я изменил (добавил или удалил) символ, сохранил и зафиксировал это изменение до написания моего кода, как увеличится размер по мере увеличения файла? Например, какова будет разница в увеличении размера между фиксациями от 1 до 10, от 1 до 100, даже от 1 до 1 миллиона?
Кроме того, становится ли со временем медленнее фиксировать изменения? При какой n-й фиксации это становится неосуществимым?
Ответ №1:
Вы можете попробовать сами:
#! /bin/bash
set -eu
chars=({a..z})
rm -rf git
mkdir git
cd git
git init
git config user.email name@example.com
for (( i = 0; i <= 10000 ; i )) ; do
printf ${chars[RANDOM % 26]} >> a
time git add a
time git commit -m "Change $i"
du -s .git
done
Если это становится слишком медленным, попробуйте запустить git gc
или git repack
.
Комментарии:
1. Спасибо, чувак, я чувствую себя глупо. Ты гений. Что произойдет, если я все же перепакую?