This is an old revision of the document!


It should be possible to import the current FreeBSD CVS repository, and retain the following.

  • A complete history of HEAD
  • Every RELENG branch, mapped to the appropriate branching methodology of the target VCS
  • If the target VCS supports atomic commits then commits to the CVS repo that would have been considered atomic by log_accum.pl should also be atomic in the new repository

It is not necessary to maintain the same per-file revision numbers. However, it is desirable that a mechanism be available to map from commits in the new repo to commits in CVS.

For example, it should be possible to say that src/README, r1.23, can be found at revision N (or changeset FOO) in the new repo.

N/A

Git's conversion-from-CVS tools are still a work in progress. There are a few options:

git-cvsimport

This should be ignored. It uses cvsps, which totally mangles your history

parsecvs

This tool does a good job of mapping CVS history into atomic commits. However, the current algorithm is O(revisions * files) in memory, which is too much on repos of our size (died on an i386 with 3GB of RAM). We think we can get it down to O(revisions + files) or so, which should be doable.

cvs2svn; git-fast-import (or cvs2svn ; svn2git)

The problem here is that there have been many reports of cvs2svn getting the history wrong. One of the features of parsecvs is that I understand its methods, and its methods sound pretty solid. Also, the cvs2svn conversions are quite time-consuming (several days on mozilla, from what I understand, which is about twice our size), so doing repeated imports to get a sample repository output that you like is rough.

  • versioncontrol/cvsimport.1158704006.txt.gz
  • Last modified: 2006/09/19 22:13
  • by EricAnholt