Meta is a NodeJS-based shell command that provides a solution to working with many repos across machines/teams without the tradeoffs involved with submodules or monorepos.
npm i -g meta
mkdir my-meta-repo
cd my-meta-repo
meta init
From my-meta-repo
:
meta project add my/folder [email protected]:a-github-account/a-repo.git
meta project add my/other-folder [email protected]:other-github-account/other-repo.git
Add this meta repo to a git repo, [email protected]:me/my-meta-repo.git
, then it can be recreated on other machines:
meta git clone [email protected]:me/my-meta-repo.git
Push/pull changes to this meta repo as projects are added/removed. After receiving changes, sync the repos:
meta git update
All other git
commands work as well, e.g., git pull
.