on 2006-03-13 I have migrated the gPhoto project from SF.net CVS to SF.net SVN by just clicking the respective button on the web interface.
I want to share this experience in order to help you decide as to if, how and when to do a CVS->SVN migration of Mailman.
It started with an about 10 day's notice so people would be aware of the change beforehand and could commit their stuff before and not interfere with the migration itself.
On day zero, The SF.net cron job started the migration started 3 minutes after I had clicked the button and finished it 40 more minutes later.
You can compare the results in the web interface:
CVS: http://cvs.sourceforge.net/viewcvs.py/gphoto/ SVN: http://svn.sourceforge.net/viewcvs.cgi/gphoto/
but I'll try to illustrate it here. The resulting SVN repository is structured like this:
branches/ libgphoto2-2.1.4/ libgphoto2/ gphoto2-2.1.4/ gphoto2/ tags/ libgphoto2-2.1.4-rc3/ libgphoto2/ libgphoto2-2.1.4-release/ libgphoto2/ gphoto2-2.1.4-rc2/ gphoto2/ gphoto2-2.1.4-release/ gphoto2/ trunk/ gphoto2/ libgphoto2/
where the CVS repository was structured like this:
with "libgphoto2-2.1.4" being a branch of "libgphoto2/" leading to the tags "libgphoto2-2.1.4-rc3" for the release candidate and "libgphoto2-2.1.4-release" for the release, and analogously for "gphoto2" and its branches and tags.
You can imagine what the Mailman SVN would look like after this migration. If one need a different directory structure, things probably get a little more interesting than just one click in the web interface and a little waiting time :) However, I didn't have the nerve to do that.
The CVS repository remains available, so anybody can still run "cvs diff" on existing working copies or check out older versions from before the migration via CVS.
In order to prevent people from continuing their work with CVS, I have patched the autogen.sh and configure scripts to abort with a message on the CVS->SVN migration and then have disabled commit access via CVSROOT.
I have not (yet) found a way to continue using the very same working copy from CVS with SVN, but have shown people the basic commands to check out from SVN, commit to SVN (with user credentials), and how to merge a patch of their uncommitted CVS changes into SVN.
Some docs and web pages referring to CVS needed to be changed, and finally, I made announcements on the mailinglist and the SF.net project News and changed the SF.net project page to show only SVN, not CVS.
Set up the commit hook scripts for e-mail and ciabot notification. Note that SF.net SVN does not allow fine-grained permission setup to the SVN repository like it allows via CVS hook scripts. With SVN, write access is either all or nothing.
Migrate the definitions from CVSROOT/modules via svn propedit svn:externals .
One or two smaller things I have forgotten to list here.
We have no experience with long term user acceptance yet. People uncomfortable with SVN/CVS and with possibly installing a new software package on their system may be annoyed a little. I could imagine this won't be much of a problem for Mailman, though, as Mailman caters more to sysadmins where (lib)gphoto2 also addresses end users.
I hope this can help with preparations. Feel free to ask questions any time.
Hans Ulrich Niedermann