A curated list of awesome Monorepo tools, software and architectures. Monorepos, short for mono-repositories, are repositories that contain multiple projects, usually related to each other.
Inspired by https://github.com/vinta/awesome-python.
- Build systems & dependency management tools
- Repository management tools
- Good reads
- Version control systems & add-ons
- Development process tools
- Notable public monorepos
- Migration tools
Build systems & dependency management tools
- Bazel is Google's monorepo-oriented build system. More on Bazel: awesome-bazel
- Buck is Facebook's monorepo-oriented build system.
- Pants is a monorepo-oriented build system, used by Twitter, Foursquare and multiple other companies.
- MBT is a build tool with differential build support.
- Symplify\Monorepo is a PHP monorepo management tool.
Repository management tools
- Syncpack allows managing multiple package.json files in Lerna Monorepos.
- wsrun allows running a command in each package of a Yarn workspaces monorepo.
- gomonorepo covers tooling and concepts of monorepos, centered around PHP.
- Why Google Stores Billions of Lines of Code in a Single Repository
Version control systems & add-ons
- Git shallow clones let you clone only part of your Git history.
- Git filter-branch let you rewrite a repository's history and prune branches.
- Git clone --single-branch
- Git sparse-checkout
- Git LFS improves the handling of large files in Git.
- GVFS virtualizes the file system beneath your git repo so that git and all tools see what appears to be a normal repo, but GVFS only downloads objects as they are needed. Windows only.
- SlothFS is similar to GVFS, but read-only. It works on Linux and OSX.
- git subtree merges and splits subtrees from your project into subprojects and back.
- git subsplit automates and simplifies the process of managing one-way read-only subtree splits.
- Atlassian's Monorepos in Git and How to handle big repositories in Git cover scaling options for Git.
- hgwatchman and Watchman, replaced by fsmonitor trigger partial, incremental builds when your files change
- Facebook's hg-experimental extensions include better support for large repositories in Hg.
Development process tools
- Pull Review Hubot plugin to automate pull reviews with lots of configuration options.
- Rietveld is a code review tool by Google used by Chromium.
- Incremental CI in Jenkins with Bazel, article by Kristina Chodorow (Bazel team).
- bazel-travis is a minimal setup to use Travis CI in a Bazel monorepo.
- buildpipe is a tool to dynamically generate Buildkite pipelines by looking at changes in projects.
- Github's CODEOWNERS can restrict who can approve a pull request that affects a given part of a monorepo.
- Chromium's OWNERS file inspired Github's CODEOWNERS.
Notable public monorepos
- Foursquare's opensource projects
- Stellar's Go monorepo
- Habitat's monorepo
- startup-os monorepo: working examples for Google's Open Source tools (bazel, etc) in a monorepo
- Bazel's migration-tooling repository.
- Gazelle generates Bazel BUILD files automatically for Go packages.
- tomono imports an existing set of Git repositories into a monorepo.
- shopsys/monorepo-tools contains a set of tools for building and splitting a monolithic repository.
To the extent possible under law, Uriel Corfa has waived all copyright and related or neighboring rights to this work.