How to divide code.
WHAT A MONOREPOSITORY IS
Several projects in one repository.
WHAT IT PROVIDES
Changes across projects in one commit One version of shared code Easier refactoring across boundaries Consistent tooling
WHAT IT COSTS
Repository size Build tooling that must understand what changed Access control being coarser
WHAT SEPARATE REPOSITORIES PROVIDE
Clear ownership Independent versioning and release Smaller, simpler repositories Finer access control
WHAT THEY COST
Coordinating changes across them Shared code requiring publication and versioning Duplicated tooling and configuration
WHAT TO CHOOSE ON
How often changes span projects Team structure and ownership Whether release cycles are independent Tooling available
WHAT SUITS A SMALL ORGANISATION
Frequently one repository, because coordination costs exceed the benefits of separation.
WHAT TO AVOID
Splitting repositories to reflect an organisational structure that changes.
WHAT TO ENSURE EITHER WAY
Clear ownership, and consistent conventions.