Hey folks! I've been working on something on & (mostly) off for a little over a year, and picked it back up recently because of yet another related frustration at work.
I've spent a lot of time ripping out git submodules from repos my teams use, but I've spent an equally large amount of time wondering why there doesn't seem to be a better option for managing arbitrary dependencies across repos in the Year of Our Lord 2024. So, I put together a really early version of such an arbitrary-dependency manager. It's called vdm, and you can find it in the linked URL above & below.
I'm sharing mostly because I'm curious if I'm blatantly missing some other tool that exists that isn't language-specific (like Bit for JS seems to be, for example), but also in case people have any hot-takes or feedback on the functionality as listed in the README.
Also of note is that I'm not sharing to potentially monetize or "generate customer interest" or anything -- I'm just another builder on the internet.
Thanks for looking, and let me know if you have any questions!
vdm: https://github.com/opensourcecorp/vdm
If you're looking for alternatives, here's something we've built (hope I'm not hijacking this): https://github.com/audiotool/pasta
It's called "pasta" for copy pasta. It was built with exactly the same motivation aa yours, also has a yaml config file, and is also implemented in go, kinda interesting. If yours takes off and we can drop ours, that'd be awesome!
For some feedback in features we have which we thinkg we'd be missing:
- we have the ability to copy individual files and specific subdirectories of other repos, not the entire repos
- mechanics to "clear" the target directory, in case a file gets deleted upstream, to keep the directories in sync
- we've modelled it with a plugin API, so you can implement new "copiers" for bitbucket, google drive, subversion, ...
- the github plugin we have uses the Github API for better performance, and you can add auth by setting an env var GITHUB_TOKEN
We also create a "result" file of every copy, noting the exact commit that was copied, which might or might not be a useful... Were thinking of posting it here at some point but never got around to it. Again, if yours takes off, that'd be the best option :)
We're using it mostly to copy .proto definitions from one repo to another.