Table of Contents


cvs2darcs - import a CVS project into Darcs


cvs2darcs [OPTIONS] MODULE


cvs2darcs is a program to import a CVS module/project into a Darcs repository, preserving all (or as much as possible) of the revision history, including support for importing branches.

Darcs is a free advanced revision-control program, available from, that has many features lacking in CVS (such as the ability to have independent branch repositories, arbitrary merging of repositories, etc.).

cvs2darcs checks out MODULE from the CVS repository into a new directory (by default, into the directory MODULE) and converts this directory into a Darcs repository. (This will take some time for large repositories. You may want to copy your CVS repository to a local disk to speed things up.)

Instead of MODULE, you can also specify an existing CVS project directory. This will import the directory into a Darcs repository (preserving the CVS information as with -p below). If the directory was already imported into Darcs, then cvs2darcs will import any new CVS patches into Darcs (but not vice-versa).

The most important option flags are -d CVSROOT, which specifies the location of the CVS repository root (exactly as the cvs -d flag); -o DIR, which specifies an alternate output directory name; and -b BRANCH, which specifies a CVS branch to import (default is HEAD). Other options are described below.

The CVS repository is not modified. However, the output directory created by cvs2darcs is not linked to the CVS repository (technically, it has no CVS/ directories). If you want to preserve the CVS information in the output directory, you can pass the -p flag; this is the default if the output directory already exists as a CVS-controlled directory.


-h, --help
Display help on the command-line options and usage.
-V, --version
Print the version number and copyright information.
-o DIR, --output-dir=DIR
Use/create directory DIR as the output Darcs repository, rather than MODULE (the default).
-b BRANCH, --branch=BRANCH
Import the CVS branch named BRANCH, instead of the current CVS HEAD (the default).
-p, --preserve-cvs
Preserve the CVS-repository information in the output directory (default is to remove it). If the output-directory has pre-existing CVS information, it is preserved by default.
Use CVSROOT as the root directory pathname of the CVS repository, exactly as for the cvs -d flag.
Use GZIP-LEVEL as the gzip compression level in CVS, exactly as for the cvs -z flag.
As for the cvs -R flag: use read-only CVS repository mode, which may improve CVS performance.
As for the cvs -x flag (used for GSSAPI and Kerberos encryption).


Send bug reports to the authors: Steven G. Johnson <>, Ganesh Sittampalam <>, and David Roundy <>.


The cvs2darcs script was written by Steven G. Johnson as a wrapper around Perl scripts written by David Roundy and Ganesh Sittampalam.

Copyright (c) 2004 David Roundy
Copyright (c) 2004 Ganesh Sittampalam
Copyright (c) 2004 Steven G. Johnson

See Also

darcs(1) , cvs(1)

Table of Contents