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
team
(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
mr-lint. This
reads your
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.
Sample output:
$ 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
mr
itself.
Here's the script. If there is any interest, I'll put
it somewhere more permanent.