>This command is an improvement from git-submodule and git-subtree; two other git commands with similar goals, but various problems.
Every time we try to assemble repositories in macro-repos we always end up regretting it. Multiple dedicated repositories allow autonomy for teams and enforce modularity and coding as a library. Monorepos have a tendency of becoming huge merge trains easily and often derailed and with lots of fear of being blamed on stepping on someone else's toes.
We update often all our projects knowing full well that not doing so is just borrowing development time at high interest rate.
As a side-note when we do have to do an assembly of different code base, we use git-subrepo: https://github.com/ingydotnet/git-subrepo which provide the best of both submodules and subtree.
https://github.com/ingydotnet/git-subrepo
git subrepos work simply by copying your dependency to a subdirectory and committing the changes using one large commit that retains metadata about the update to the subrepo. For that reason, git subrepos aren't symlinks. You don't need to git clone --recursive like with git submodules, and you don't need cross-repo authentication. Updating a subrepo means performing another commit.
Even though git subrepos are the most poorly maintained, the design is simpler.
I wish someone would fork and take over maintenance.
git subrepos are the best.