Прямая оценка размера за год, очевидно, невозможна, если у вас нет представления о количестве коммитов и окончательном размере рабочего дерева.
Тем не менее, git довольно эффективно использует дисковое пространство. Абсолютно никогда не хранится более одной копии данной версии файла (это внутренне представляется в виде большого двоичного объекта), а старые большие двоичные объекты дельта-сжимаются в пакеты. Это означает, что он очень эффективен для хранения простого текста и очень неэффективен для больших двоичных файлов. Если ваш проект в основном простой текст, вам почти наверняка не о чем беспокоиться.
Ветви и теги практически не влияют на размер. Конечно, ветвь reflog может составить несколько КБ, но это не о чем беспокоиться. Облегченные теги - это просто сохраненный SHA1, а аннотированные теги просто добавляют к этому метаданные.
Что касается строк кода и количества коммитов, сложно сказать точно. Вообще, коммиты - это гораздо больший фактор, чем строки кода; у вас может быть много разных версий файлов, которые все складываются (даже представлены в виде дельт), но фактическое содержимое должно быть сохранено только один раз. Это подтверждается тем фактом, что рабочие деревья имеют тенденцию быть намного больше, чем каталог .git. Например, мой клон git.git
имеет рабочее дерево 17 МБ и каталог .git 39 МБ. Другие проекты, которые я исследовал, имели аналогичные отношения.
Больше коммитов равного размера , безусловно, увеличит хранилище, но если взять 1000 коммитов и разбить их на 10000 (включая те же изменения), это не сделает хранилище намного больше. Сами объекты коммита малы; это различия в файлах, которые занимают место. Вы можете увидеть начальный всплеск размера, поскольку коммиты только периодически подвергаются дельта-сжатию, но как только срабатывает git gc --auto
, эти коммиты сжимаются обратно.
Лучшее обобщение, которое я могу сделать, заключается в том, что каталог .git хранилища будет стремиться расти со скоростью , пропорциональной количеству дельты за время, что в целом должно быть пропорционально размеру рабочего дерева и Скорость, с которой люди модифицируют проект. Это, конечно, настолько общий вопрос, что может быть совершенно бесполезным, но вы здесь.
Если вы хотите оценить, я просто взял бы некоторые данные за первый месяц или около того, и попытался бы построить кривую.