Apr 25, 2017

Conversion of a CVS repository to GIT

After detecting an old CVS (Concurrent Version System) , we'd like to convert this repository with
multiple modules to a GIT repository.

There is a module in git named git-cvsimport to import a CVS Repository.
The basic command is:
git cvsimport -o <targetbranch> -d <CVSROOT like :pserver:<host>:/repo <cvs-module>   
The problem is, that this command converts one CVS-Module (see CVS/module file) of the

On the repository I'm working on, there are multiple modules and they belong together. After
a little search, I found a script handling multiple modules:
see: http://max.romantschuk.fi/blog/2009/dec/29/importing-cvs-modules-single-git-repo/

The script linked in this page named git-cvsmod2subdir.sh is doing the job for me.
Bring in the script to the docker container.

Startup an interactive  docker container with e.g. CentOS as the image

docker run -it --name centos centos bash
yum -y install git git-cvs cvs cvsps 

git config --global user.email "email@domain"
git config --global user.name "Your Name"
 git init <gitrepo>  cd <gitrepo>

Before using the script, a local git repository has to be initialized as shown above, after this,
the CVSROOT has to be modified in git-cvsmod2subdir.sh and convert all repos with the
following command.

../git-cvsmod2subdir.sh <module1> <module2> <module3>

This sequence converts each module and merges it into the new GIT-Repository with a merge commit.