git-cvsimport(1)
================

NAME
----
git-cvsimport - Salvage your data out of another SCM people love to hate


SYNOPSIS
--------
[verse]
'git-cvsimport' [-o <branch-for-HEAD>] [-h] [-v] [-d <CVSROOT>] [-s <subst>]
	      [-p <options-for-cvsps>] [-C <git_repository>] [-i] [-P <file>]
	      [-m] [-M regex] [<CVS_module>]


DESCRIPTION
-----------
Imports a CVS repository into git. It will either create a new
repository, or incrementally import into an existing one.

Splitting the CVS log into patch sets is done by 'cvsps'.
At least version 2.1 is required.

You should *never* do any work of your own on the branches that are
created by git-cvsimport. The initial import will create and populate a
"master" branch from the CVS repository's main branch which you're free
to work with; after that, you need to 'git merge' incremental imports, or
any CVS branches, yourself.

OPTIONS
-------
-d <CVSROOT>::
	The root of the CVS archive. May be local (a simple path) or remote;
	currently, only the :local:, :ext: and :pserver: access methods 
	are supported.

-C <target-dir>::
        The git repository to import to.  If the directory doesn't
        exist, it will be created.  Default is the current directory.

-i::
	Import-only: don't perform a checkout after importing.  This option
	ensures the working directory and index remain untouched and will
	not create them if they do not exist.

-k::
	Kill keywords: will extract files with -kk from the CVS archive
	to avoid noisy changesets. Highly recommended, but off by default
	to preserve compatibility with early imported trees. 

-u::
	Convert underscores in tag and branch names to dots.

-o <branch-for-HEAD>::
	The 'HEAD' branch from CVS is imported to the 'origin' branch within
	the git repository, as 'HEAD' already has a special meaning for git.
	Use this option if you want to import into a different branch.
+
Use '-o master' for continuing an import that was initially done by
the old cvs2git tool.

-p <options-for-cvsps>::
	Additional options for cvsps.
	The options '-u' and '-A' are implicit and should not be used here.
+
If you need to pass multiple options, separate them with a comma.

-P <cvsps-output-file>::
	Instead of calling cvsps, read the provided cvsps output file. Useful
	for debugging or when cvsps is being handled outside cvsimport.

-m::    
	Attempt to detect merges based on the commit message. This option
	will enable default regexes that try to capture the name source 
	branch name from the commit message. 

-M <regex>::
	Attempt to detect merges based on the commit message with a custom
	regex. It can be used with -m to also see the default regexes. 
	You must escape forward slashes. 

-v::
	Verbosity: let 'cvsimport' report what it is doing.

<CVS_module>::
	The CVS module you want to import. Relative to <CVSROOT>.

-h::
	Print a short usage message and exit.

-z <fuzz>::
	Pass the timestamp fuzz factor to cvsps, in seconds. If unset,
	cvsps defaults to 300s.

-s <subst>::
	Substitute the character "/" in branch names with <subst>

-a::
	Import all commits, including recent ones. cvsimport by default
	skips commits that have a timestamp less than 10 minutes ago.

-S <regex>::
	Skip paths matching the regex.

-L <limit>::
	Limit the number of commits imported. Workaround for cases where
	cvsimport leaks memory.

-A <author-conv-file>::
	CVS by default uses the Unix username when writing its
	commit logs. Using this option and an author-conv-file
	in this format
+
---------
	exon=Andreas Ericsson <ae@op5.se>
	spawn=Simon Pawn <spawn@frog-pond.org>

---------
+
git-cvsimport will make it appear as those authors had
their GIT_AUTHOR_NAME and GIT_AUTHOR_EMAIL set properly
all along.
+
For convenience, this data is saved to $GIT_DIR/cvs-authors
each time the -A option is provided and read from that same
file each time git-cvsimport is run.
+
It is not recommended to use this feature if you intend to
export changes back to CVS again later with
gitlink:git-cvsexportcommit[1].

OUTPUT
------
If '-v' is specified, the script reports what it is doing.

Otherwise, success is indicated the Unix way, i.e. by simply exiting with
a zero exit status.


Author
------
Written by Matthias Urlichs <smurf@smurf.noris.de>, with help from
various participants of the git-list <git@vger.kernel.org>.

Documentation
--------------
Documentation by Matthias Urlichs <smurf@smurf.noris.de>.

GIT
---
Part of the gitlink:git[7] suite

