mr (multi-repository) is a useful script
by Joey Hess for managing multiple version control
check-outs. It's particularly useful for team Debian package maintenance,
where you can have a common
mrconfig file allowing team members to have easy
access to all packages. Here's the mrconfig file for the Games
(which bizarrely only lists git repositories despite being maintained in svn…).
It could also be useful for maintaining a collection of puppet modules from separate places.
I frequently find myself wanting to sanity check my local copies of repositories. Have I forgotten to push commits upstream? Are my local branches not up-to-date? In a package management context, have I remembered to tag each package release? Are all the upstream releases tagged?
To aid this process, I've hacked together a script I've called
mrconfig file and performs the above tests on every repository it
finds. It attempts to determine whether the check-out is a debian package or
not, and performs additional tests where appropriate.
$ mr-lint wd/debian/bup wd/debian/bup: local branches not present in origin: rescue-diverge wd/debian/bup: local branch debian does not match origin branch debian wd/debian/bup: local branch master does not match origin branch master wd/debian/bup: 5 missing upstream tags: 0.21, 0.17b, 0.20, 0.24b, 0.14a wd/debian/bup: 3 missing debian tags: debian/0.17b-1, debian/0.20-2, debian/0.21-1
I've called it
mr-lint because I hope that if people think the idea is sound
or the script useful, I might be able to adapt it into a patch against
itself. Here's the script. If there is any interest, I'll put
it somewhere more permanent.