git submodules can handle the basics of this decently well.
You can include any git-hosted project pretty easily with `git submodule add`
You can easily switch which commit/branch/version of the project you want to have included. So if you want to be using the latest version of Project X + one special bugfix that you made, just fork the project on GitHub and switch your submodule to point at your latest commit.
`git submodule update --init --recursive` to update all the package/submodules in your project at once.
You can include any git-hosted project pretty easily with `git submodule add`
You can easily switch which commit/branch/version of the project you want to have included. So if you want to be using the latest version of Project X + one special bugfix that you made, just fork the project on GitHub and switch your submodule to point at your latest commit.
`git submodule update --init --recursive` to update all the package/submodules in your project at once.