С какой скоростью увеличивается размер в git, если фиксируется каждое изменение символа?

#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. Спасибо, чувак, я чувствую себя глупо. Ты гений. Что произойдет, если я все же перепакую?