We are implementing monorepo internally to let all teams work closely. As there are dependencies between each team’s work, it is important to understand and track the cross-project changes that go into the monorepo. Monorepo is a good practice that brings in better collaboration, but it also introduces some inconveniences.
The biggest complaints I heard is that the monorepo is growing larger everyday, and it takes a good amount of time to clone or checkout. When a team runs a build, they only need to checkout their project in the monorepo instead of the whole repository. The current solution is to add a sparse-check config file in .git. For example:
git config core.sparseCheckout true
echo "myproject/*" >> .git/info/sparse-checkout
Now a new git sparse-checkout command is available, according to this post: Bring your monorepo down to size with sparse-checkout. This should a handy tool for monorepo users.