Converting CVS to Fossil
Not logged in
Tcl 2014 Conference, Portland/OR, US, Nov 10-14
Send your abstracts to tclconference@googlegroups.com by Sep 8.

The procedure for migrating from CVS to Fossil requires an intermediary step through GIT. The process used by ODIE was originally described by Vince West Here.

The script used is as follows:

#!/bin/bash

die(){
        echo $1
        exit 1
}

# parameters:
# 1 - username of admin
# 2 - cvs repository to convert
# 3 - module in cvs to convert
# 4 - name of fossil repo (no extension)
# note: the repository will be created right here!

if [ "$4" == "" ]
then
        echo "Syntax:"
        echo " cvs2fossil username  cvsroot module fossil-repo-name"
        die  "Please make sure you have all three parameters set!"
fi

echo "Importing from CVS to git.  This will take some time, be patient!"
mkdir $4
cd $4
cvs -d $2 login
git cvsimport -v -d $2 $3 || die "Unable to import to git"

echo "Importing from git to fossil.  This will also take some time, sadly"

(
git fast-export --full-tree --all | fossil import --git ../$4.fossil || die "Unable to import into fossil"
)

echo "Done!."
fossil user new $1 -R ../$4.fossil
fossil user capabilities $1 'v' -R ../$4.fossil

In the end you well have a directory with the name of argument4 (containing the git repository) and a file called argument4.fossil with the new fossil repository.

Example:

sh cvs2fossilnew hypnotoad :pserver:anonymous@tls.cvs.sourceforge.net:/cvsroot/tls tls tls
* Prompts for CVS Password*
<i>Lots of activity</i>
Done!.
contact-info: Sean Woods
password: 
Retype new password: 

If I ls the directory:

ls
cvs2fossil.sh
tclvfs.fossil
tclvfs/