Сколько веток можно создать в github / gitlab? - PullRequest
0 голосов
/ 17 февраля 2020

Существуют ли какие-либо ограничения для создания веток в GitHub / GitLab?

Я сейчас работаю над проектом, поэтому мне интересно узнать о создании веток. Сколько веток можно создать?

Ответы [ 2 ]

1 голос
/ 17 февраля 2020

По умолчанию размер пакетов не ограничен, хотя git получает немного медленного sh, если они слишком велики, чтобы уместиться в памяти. Git также имеет филиалы. Каждая ветвь - это просто текстовый файл, в котором хранится 40-байтовый sha1 коммита. Поэтому каждая ветвь занимает 40 байтов (но на самом деле, 4,0 КБ на диске).

Для получения дополнительной информации вы можете прочитать эту ссылку: Ограничение на число git ветвей

0 голосов
/ 17 февраля 2020

Нет жесткого ограничения на количество веток, тегов, имен для удаленного отслеживания и других ссылок. (Все записи Git name-to-ha sh -ID карты refs или ссылки: имена ветвей - это просто ссылки, полное имя которых начинается с refs/heads/ ).

Они не всегда хранятся в отдельных файлах. В частности, ссылки со временем станут «упакованными». Упакованные ссылки хранятся в одном плоском файле, что заставляет их занимать (намного) меньше дискового пространства, хотя теперь чтение любого конкретного значения ссылки - его ha sh ID - может потребовать чтения довольно большого файла, если у вас много ссылок. ( Запись значения приводит к тому, что ссылка распаковывается, оставляя предыдущее значение в файле pack-refs - так что, как вы можете видеть, процесс поиска значения ссылки начинается с поиска сначала неупакованной копии , поскольку это должно переопределять любую упакованную копию.)

Поскольку каждая пара имя-значение занимает так мало дискового пространства (один блок или меньше), определенно возможно создать миллионы ссылок. Если вы сделаете это, ваши операции Git заметно замедлятся. Причина в том, что Git полон линейных сканов по всем ссылкам. Например, чтобы «декорировать» вывод git log, 1 до того, как git log напечатает коммит, он просматривает каждый реф, чтобы увидеть, ссылается ли этот реф на этот коммит. вопрос , на который ответ rootkonda ссылки содержит в qqx другую ссылку на ветку nabble.com в архиве списка рассылки о производительности возникающие проблемы (некоторые уже исправлены, некоторые остаются).

GitHub и Google также несколько лет обнаружили, что go, что Git может тратить много времени и пропускную способность сети в процессе приветствия, что два Gits go при запуске тоже: когда у вас есть Git вызов сервера Git для git fetch например, ваш Git имеет сервер Git список из все его ветви и тега и других таких имен. Если есть, скажем, десять тысяч перечисленных имен, каждое из которых имеет длину в среднем около 60 символов при расширении с идентификаторами ha sh, 2 , то есть около 600 килобайт данных до любой полезной может произойти обмен коммитами.

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


1 In:

commit c7a62075917b3340f908093f63f1161c44ed1475 (HEAD -> master, origin/master, origin/HEAD)

HEAD, master, origin master и origin/HEAD - украшения, найденные при поиске по всем ссылкам; форматирование HEAD -> указывает на то, что HEAD присоединено, в данном случае к master).

2 Обратите внимание, что аннотированные теги здесь удваиваются, так как они перечисляют оба имени тега и ha sh ID, и имя тега с суффиксом ^{} и целью тега. refs/tags/v1.2.3 09e393d913072d7765b02aba1210d843a83cfbae - это 57 символов даже без новой строки или другого разделителя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...