Home Explore Blog CI



git

3rd chunk of `Documentation/git-cvsimport.adoc`
278d31fa6be38890c10da6ff7788c1531976430e0923fcf90000000100000d74
 message.

-M <regex>::
	Attempt to detect merges based on the commit message with a custom
	regex. It can be used with `-m` to enable the default regexes
	as well. You must escape forward slashes.
+
The regex must capture the source branch name in $1.
+
This option can be used several times to provide several detection regexes.

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

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

-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
	maps the name recorded in CVS to author name, e-mail and
	optional time zone:
+
---------
	exon=Andreas Ericsson <ae@op5.se>
	spawn=Simon Pawn <spawn@frog-pond.org> America/Chicago

---------
+
'git cvsimport' will make it appear as those authors had
their GIT_AUTHOR_NAME and GIT_AUTHOR_EMAIL set properly
all along.  If a time zone is specified, GIT_AUTHOR_DATE will
have the corresponding offset applied.
+
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
'git cvsexportcommit'.

-R::
	Generate a `$GIT_DIR/cvs-revisions` file containing a mapping from CVS
	revision numbers to newly-created Git commit IDs.  The generated file
	will contain one line for each (filename, revision) pair imported;
	each line will look like
+
---------
src/widget.c 1.1 1d862f173cdc7325b6fa6d2ae1cfd61fd1b512b7
---------
+
The revision data is appended to the file if it already exists, for use when
doing incremental imports.
+
This option may be useful if you have CVS revision numbers stored in commit
messages, bug-tracking systems, email archives, and the like.

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

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.

[[issues]]
ISSUES
------
Problems related to timestamps:

 * If timestamps of commits in the CVS repository are not stable enough
   to be used for ordering commits changes may show up in the wrong
   order.
 * If any files were ever "cvs import"ed more than once (e.g., import of
   more than one vendor release) the HEAD contains the wrong content.
 * If the timestamp order of different files cross the revision order
   within the commit matching time window the order of commits may be
   wrong.

Problems related to branches:

 * Branches on which no commits have been made are not imported.
 * All files from the branching point are added to a branch even if
   never added in CVS.
 * This applies to files added to the source branch *after* a daughter
   branch was created: if previously no commit was made on the daughter
   branch they will erroneously be added to the daughter branch in git.

Problems related to tags:

* Multiple tags on the same revision are not imported.

If you suspect that any of these issues may apply to the repository you
want to import, consider using cvs2git:

* cvs2git (part of cvs2svn), `https://subversion.apache.org/`

GIT
---
Part of the linkgit:git[1] suite

Title: Git CVSImport Options and Issues
Summary
The git-cvsimport command provides additional options for customizing the import process, including detecting merges, skipping paths, and mapping authors, as well as notes on common issues related to timestamps, branches, and tags that may arise during the import process.