[Mailman-Developers] Experiences migrating from CVS to SVN

Hans Ulrich Niedermann hun at n-dimensional.de
Thu Mar 16 09:51:08 CET 2006


Hi,

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:

   gphoto2/
   libgphoto2/

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.

Additional jobs:

 * 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.

Gruß,

Hans Ulrich Niedermann


More information about the Mailman-Developers mailing list