I use Module::Build, Module::Starter, CPAN::Mini and CPAN::Mini::Inject to keep a local CPAN mirror. With CPAN::Mini::Inject, I can add modules that I wouldn't want to post to the real CPAN.
With Module::Build and Module::Starter, you can generate complete CPAN-ready modules with almost zero extra hassle. Once I learned about them, I kicked myself for not doing it earlier. There is soooo much to gain for so little extra work. Documentation and testing become totally easy.
CPAN::Mini::Inject doesn't support bundles or an authorid that isn't registered with CPAN. I was working with the author on adding those features, but he hasn't responded since I sent him my code... I should bug him again...
In a semi-unrelated note:
Last time I looked into Subversion, it was Linux only. Has that changed? I still use CVS because I work in Linux, OpenBSD and Windows. If Subversion will work on those platforms, I'd love to hear about it.