Subject: Re: Git and cvsimport

From: Nick <[email-masked]>
Date: Tue, 27 Apr 2010 12:57:28 +0100

Marin Atanasov wrote:
> I want to convert CVS repo to a Git one.

If you don't care about incrementally updating the Git repo from the CVS one, I
suggest you don't use git-cvsimport. It can make mistakes in the translation,
especially with large and old repositories.  On the other hand, git-cvsimport is
currently the only tool which can incrementally import changes from CVS, i.e.
co-exist with it.

cvs2git is a tool which worked more reliably for me, but it can only make a
one-off conversion.  Also, you might need to tidy up the result afterwards -
removing crufty tags, unrelated directories, correcting committer identities,
etc.  git-filter-branch may be useful here.

If you do care about co-existing with CVS, I find it gets to be hard work,
especially if your CVS repo has branches you have to follow - so really I'd
suggest you reconsider and only try it if you really have no choice.

In that case you may want to write a wrapper script for
git-cvsimport/exportcommit commands to reduce the complexity of using them.
I've attempted this, and it sort of works for me, but the result is not really
satisfactory, I find it's still liable to break on encountering random things
cvsimport/cvsexportcommit can't handle, and then you need to fix things manually
(although usually this can be done in Git).  Ask me if you want to know more.

git-cvssever may be another option, if your CVS users agree, but I've no
experience with it.

My preferred strategy is to persuade my colleagues to abandon CVS entirely.

Cheers,

N