I finished the instructions and tested them (except for the 
sourceforge-specific parts) on a local copy of the Firebird-repository. 
See below. For now I have assumed to use my own username for cvs2svn 
specific revisions.

During the import the repository is not available for commits. The 
creation of the dumpfile is can be done in advance, assuming no further 
checkins happen to the client-java module in CVS.

I guess that the migration will take 1 to 2 hours, assuming I use rsync 
to update the backup of the svn repository on my machine instead of a 
full new backup (1-2 minutes to update between yesterday and today, 
about 1.5 hours for a new, full rsync).
There however is uncertainty on the amount of time that copying the 
repository for edit (step 3b) and saving it back (step 5a) will take and 
how fast loading the dumpfile into the repository is on sourceforge 
(step 4; this takes about 5 minutes on my machine).

The timetable for this would be:
T - 1 hour     : reminder to firebird-devel about migration
T - 5 minutes  : announcement to firebird-devel that migration starts, 
no more subversion commits from this time.
T + 0          : Backup repository (step 1)
T + 5 minutes  : Create client-java folder (step 2)
T + 6 minutes  : Upload jaybirddump.zip to sourceforge and unzip (step 3a)
T + 15 minutes : Checkout repository (step 3b)
T + 45 minutes : Load dumpfile into repository (step 4)
T + 75 minutes : Save repository back (step 5a)
T + 105 minutes: Migration done, sanity checks on repository (eg browse, 
checkout)
T + 110 minutes: announcement to firebird-devel, subversion commits 
allowed again

Note: I have assumed 30 minutes for each step with uncertainty in time, 
if things go faster, then the repository will simply be available 
sooner. However we probably should factor in an additional two hours 
just to be on the safe side.

I propose to do this migration on Sunday 2012-08-05 (August fifth) 
between 12:00 and 16:00 UTC (14:00 and 18:00 Central European Summer 
Time), as it seems that Sundays are usually pretty low on commits.

Rollback before step 5a will consist of simply calling adminrepo --discard.

Rollback after step 5a consists of me generating a dumpfile based on the 
backup and recreating and reloading the repository using the 
instructions on 
http://sourceforge.net/apps/trac/sourceforge/wiki/SVN%20adminrepo#Importingthedumpfile
Given the size of the repository that rollback scenario would probably 
take several hours.

Steps to import Jaybird into Subversion
=======================================

Instructions based on Windows and Cygwin with folder /repomigration for 
various backups and files.
Migration uses trunk version of cvs2svn from cvs2svn.tigris.org (and not 
the cygwin version) to solve problems with linebreaks(?) in log texts.

Create the dumpfile from CVS
----------------------------

To prevent conflict with local (Windows) python:
     unset PYTHONHOME

1) backup the entire CVS repository using rsync: (execute from folder 
/repomigration/cvsrepo)
        rsync -av firebird.cvs.sourceforge.net::cvsroot/firebird/* .
2) Create dumpfile
        /repomigration/cvs2svn-trunk/cvs2svn --username=mrotteveel 
--auto-props=/repomigration/svn-eol-style.txt 
--mime-types=/repomigration/mime.types -–eol-from-mime-type 
--dumpfile=/repomigration/jaybirddump /repomigration/cvsrepo/client-java

svn-eol-style.txt:      http://www.apache.org/dev/svn-eol-style.txt
mime.types:      
http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types

Import the dumpfile into SVN
----------------------------

Note: during import, no commits can be made by other users

1) Backup the SVN repository using rsync: (execute from folder 
/repomigration/svnrepo)
        rsync -av firebird.svn.sourceforge.net::svn/firebird/* .
2) Create client-java folder in the subversion repository (eg using 
TortoiseSVN) or commandline:
        svn mkdir -m "Create repository-folder for Jaybird (Firebird JDBC)" 
https://firebird.svn.sourceforge.net/svnroot/firebird/client-java
3) <sourceforge specifics (upload dumpfile, retrieve repository)
3a) Upload zipped dumpfile and unzip:
        Use sf-help to find out the shell session and host info for sftp to 
connect to
        Use sftp (or WinSCP) to upload the dumpfile (to 
/home/project-web/firebird/htdocs as that seems to be the only writable 
location according to most sources)
3b) Checkout repository for edit into /svnroot/firebird:
        adminrepo --checkout svn
4) Load dump into repository into folder client-java:
        svnadmin load --parent-dir client-java /svnroot/firebird < jaybirddump
5) <sourceforge specifics (save repository)
5a) Save checkedout repository back:
        adminrepo --save svn

Not saving changes:
     adminrepo --discard

References:
http://cvs2svn.tigris.org/cvs2svn.html
http://sourceforge.net/apps/trac/sourceforge/wiki/Using%20rsync%20for%20backups
http://sourceforge.net/apps/trac/sourceforge/wiki/SVN%20adminrepo#ImportingfromotherreposincludingotherSCMs
http://sourceforge.net/apps/trac/sourceforge/wiki/Shell%20service#Accessingyourshellwithothertools

-- 
Mark Rotteveel

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to