Home Explore Blog CI



git

1st chunk of `Documentation/git-cvsimport.adoc`
d82fcb748a22cf132bd269f310c54893eeb0f566700084ce0000000100000f24
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>]
	      [-A <author-conv-file>] [-p <options-for-cvsps>] [-P <file>]
	      [-C <git-repository>] [-z <fuzz>] [-i] [-k] [-u] [-s <subst>]
	      [-a] [-m] [-M <regex>] [-S <regex>] [-L <commit-limit>]
	      [-r <remote>] [-R] [<CVS-module>]


DESCRIPTION
-----------
*WARNING:* `git cvsimport` uses cvsps version 2, which is considered
deprecated; it does not work with cvsps version 3 and later.  If you are
performing a one-shot import of a CVS repository consider using
http://cvs2svn.tigris.org/cvs2git.html[cvs2git] or
https://gitlab.com/esr/cvs-fast-export[cvs-fast-export].

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.

*WARNING:* for certain situations the import leads to incorrect results.
Please see the section <<issues,ISSUES>> for further reference.

You should *never* do any work of your own on the branches that are
created by 'git cvsimport'.  By default 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.  It is advisable to specify a named remote via
-r to separate and protect the incoming branches.

If you intend to set up a shared public repository that all developers can
read/write, or if you want to use linkgit:git-cvsserver[1], then you
probably want to make a bare clone of the imported repository,
and use the clone as the shared repository.
See linkgit:gitcvs-migration[7].


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

-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. If not given, 'git cvsimport' will try to read it
	from `CVS/Root`. If no such file exists, it checks for the
	`CVSROOT` environment variable.

<CVS-module>::
	The CVS module you want to import. Relative to <CVSROOT>.
	If not given, 'git cvsimport' tries to read it from
	`CVS/Repository`.

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

-r <remote>::
	The Git remote to import this CVS repository into.
	Moves all CVS branches into remotes/<remote>/<branch>
	akin to the way 'git clone' uses 'origin' by default.

-o <branch-for-HEAD>::
	When no remote is specified (via -r) the `HEAD` branch
	from CVS is imported to the 'origin' branch within the Git
	repository, as `HEAD` already has a special meaning for Git.
	When a remote is specified the `HEAD` branch is named
	remotes/<remote>/master mirroring 'git clone' behaviour.
	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.

-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.

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

-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

Title: Git CVSImport Command
Summary
The git-cvsimport command is used to import a CVS repository into Git, either creating a new repository or incrementally importing into an existing one, while providing various options for customization and handling potential issues.