At AT&T Israel R&D Center, I attended several debates last year on whether to use Monorepo or Polyrepo (also known as Multirepo).
To help you make the right choice, I wrote this blog post to explain and analyze the differences between Monorepo and Polyrepo.
It is essential to understand that the way branches are managed is not in this discussion scope; we can use any branching method with each repo’s architecture — Mono and Poly.
When someone says repo, they generally mean Polyrepo. Polyrepo means that every microservices have a dedicated version-controlled repository.
This means that the entire organization, all apps, use one centralized repository; an example of such an organization is Google. Some organizations are not as “religious” as Google and use multiple Monorepos, each Monorepo for a correlated group of apps. Examples of such organizations are Microsoft, Facebook, and Twitter.
If you choose Monorepo, it is highly recommended to use tools to assist you. Several tools can help manage and use Monorepo; some support multiple programming languages and some only one specific language.