> Некоторые проекты короткие, они завершились и нечего их больше тянуть. Скорее такие проекты как-то обособленно живут. Но в крупных компаниях обычно все живые проекты на поддержке и если там используется общий код, то при его обновлении проект тоже будет обновлен.
> Сейчас популярны микросервисы. И вот пожалуйста, один микросервис - один репозиторий.
> Всё равно одного микросервиса не работает над всеми сразу.
А теперь представим, что все микросервисы (скажем их 100) зависят от одного фреймворка. И вот он находтся в 101 репозитории. Нашелся в нем баг или фичу новую сделали. И что теперь? Обновляем репозиторий фреймворка, затем 70 разных коммитов на обновление каждого микросервиса. В 71 при обновлении что-то сломалось. Оказывается новый код в фреймворке ломает этот сервис. Все заново. В итоге у нас в лучшем случае 101 коммит в разных разбросанных репозиториях.
А как могло быть? Один атомарный коммит (ну или несколько и затем сквошаться перед ребэйзом), где все тесты для каждого микросервиса сразу прогоняются. Да, это не быстро, но это происходит удаленно. И да, так живет гугл и компания.
> Никто обычно не делает монолитный проект, а разбивают его на библиотеки.
Ну библиотеки же нужно обновлять. Код статически собирают и если ты собираешь свой сервис, то он собирается с текущим кодом общей библиотеки. Обновляешь общую библиотеку - обнови код всех зависимых сервисов.
> Посмотрел я chromium. Сейчас качается 1.16 GB. Не так и много по
> меркам.
Там 10+ GB. Монолитный репозиторй в яндексе больше 40 GB и это только срез. Представь сколько занимает вся история.