Многие выбрали Git за его гибкость: в частности, модель веток и слияний позволяют эффективно децентрализовать разработку. В большинстве случаев эта гибкость является плюсом, однако некоторые сценарии поддержаны не так элегантно. Один из них — это использование Git для больших монолитных репозиториев — монорепозиториев. Эта статья исследует проблемы монорепозиториев в Git и предлагает способы их смягчения.
Скала Улуру в Австралии как пример монолита — КДПВ, не более
Что такое монорепозиторий?
Определения разнятся, но мы будем считать репозиторий монолитным при выполнении следующих условий:
- Репозиторий содержит более одного логического проекта (например, iOS-клиент и веб-приложение)
- Эти проекты могут быть не связаны, слабо связаны или связаны сторонними средствами (например, через систему управления зависимостями)
- Репозиторий большой во многих смыслах:
- По количеству коммитов
- По количеству веток и/или тегов
- По количеству файлов
- По размеру содержимого (то есть размеру папки
.git
)