threads / discuss / 22092

What is the best way to convert a multi module CVS repository to git?

Subject: What is the best way to convert a multi module CVS repository to git?

## tl;dr

2 messages between Jan 4, 2010 and Jan 14, 2010.

replies: 1people: 2as markdown or json

wolfgang.liebich@siemens-enterprise.com· Jan 4, 2010, 15:53 UTC · lore

Hi, I have inherited a rather big, old, multi-module CVS repository which I want to convert to GIT. Most of the CVS modules do belong to one project now, i.e. the separation into multiple modules is something of a historical accident now. This means it does not make sense to put each CVS module into an own GIT project and use submodules. Furthermore the conversion will be one-way, i.e. afterwards the CVS repo will be shutdown forever and moved to offline storage. Incremental conversion is therefore not an issue. If I need one day to convert everything (the repo is about 3GB), so be it - the most important feature to me is correctness (I do NOT want to have to run manual verifications for N days/weeks/months, just to verify that everything was converted), and ideally even the possibility of re-creating the history of files which were moved across directories (this HAS happened sometimes - I did not fiddle around with the RCS files, but used straight rm+add, and accepted the loss of history forced on me by CVS).

What is the best (i.e. most trustworthy) method of conversion? For now
it seems to me that cvs2git (the ...2git companion to cvs2svn) is the
best choice (because it can handle multi-module projects in a sane way)
- but I'm open to suggestions!

Ciao, Wolfgang Liebich

Heiko Voigt· Jan 14, 2010, 20:52 UTC · re: wolfgang.liebich@siemens-enterprise.com · lore

Re: What is the best way to convert a multi module CVS repository to git?

On Mon, Jan 04, 2010 at 04:53:22PM +0100, Wolfgang.Liebich@siemens-enterprise.com wrote:
Show 23 quoted lines
> Hi,
> I have inherited a rather big, old, multi-module CVS repository which I
> want to convert to GIT.
> Most of the CVS modules do belong to one project now, i.e. the
> separation into multiple modules is something of a historical accident
> now. This means it does not make sense to put each CVS module into an
> own GIT project and use submodules.
> Furthermore the conversion will be one-way, i.e. afterwards the CVS repo
> will be shutdown forever and moved to offline storage. Incremental
> conversion is therefore not an issue.
> If I need one day to convert everything (the repo is about 3GB), so be
> it - the most important feature to me is correctness (I do NOT want to
> have to run manual verifications for N days/weeks/months, just to verify
> that everything was converted), and ideally even the possibility of
> re-creating the history of files which were moved across directories
> (this HAS happened sometimes - I did not fiddle around with the RCS
> files, but used straight rm+add, and accepted the loss of history forced
> on me by CVS).
> 
> What is the best (i.e. most trustworthy) method of conversion? For now
> it seems to me that cvs2git (the ...2git companion to cvs2svn) is the
> best choice (because it can handle multi-module projects in a sane way)
> - but I'm open to suggestions!

As far as I know cvs2git provides the technically most correct conversion out there. Nevertheless I would suggest to try parsecvs. It is kind of hard to set up but has a more intuitive heuristic for tags although not strictly correct.

cheers Heiko

← back to recent threads