There is also a hybrid approach of some monorepos mixed with multirepos.
- Git source control is often used, and it does not scale at massive code levels and may require customisation to do so (not many people will hit this problem)
- Security is harder. GitHub can let you restrict access to certain parts of a repo, but everyone can read all.
- Can make it to easy to couple code for the unwary.
- Large code bases can slow down (maybe some monorepos can restrict this problem with partial loading)
- some tooling like Continuous Integration does not support monorepos well, or you pay extra.
- Easier to download all the code
- Easy to search all the code (unless your monorepo is so large you only get access to virtual areas of it and hence not all is local)
- Features like organisation searches in GitHub can potentially give you this level of searching in multirepo without need to clone.
- Refactoring is easier (if your monorepo and programming language/editor support it)
- you can create branches across a whole piece of work (in different areas) and determine if it works which is generally harder to do in multirepos and there is not a lot of widely used tooling to support this as far as I can tell.
- some monorepo tools can determine a graph of dependencies and how changes may require incremental builds or running of tests etc.
- it may be easier to reuse pipeline structures within a monorepo
- very custom setup
- can be painful if your setup/version is not supported out of the box