blob: b7a8c10b8709108c1c8a0d14f661c179c2b4f22c [file] [log] [blame]
Junio C Hamano1a4e8412005-12-27 08:17:231git-cvsimport(1)
2================
3
4NAME
5----
Junio C Hamano7c73c662007-01-19 00:37:506git-cvsimport - Salvage your data out of another SCM people love to hate
Junio C Hamano1a4e8412005-12-27 08:17:237
8
9SYNOPSIS
10--------
Junio C Hamano235a91e2006-01-07 01:13:5811[verse]
Junio C Hamanofce7c7e2008-07-02 03:06:3812'git cvsimport' [-o <branch-for-HEAD>] [-h] [-v] [-d <CVSROOT>]
Junio C Hamano12a3a232007-04-07 10:18:1013 [-A <author-conv-file>] [-p <options-for-cvsps>] [-P <file>]
14 [-C <git_repository>] [-z <fuzz>] [-i] [-k] [-u] [-s <subst>]
15 [-a] [-m] [-M <regex>] [-S <regex>] [-L <commitlimit>]
Junio C Hamano9e52d4e2007-06-13 08:29:3316 [-r <remote>] [<CVS_module>]
Junio C Hamano1a4e8412005-12-27 08:17:2317
18
19DESCRIPTION
20-----------
21Imports a CVS repository into git. It will either create a new
22repository, or incrementally import into an existing one.
23
24Splitting the CVS log into patch sets is done by 'cvsps'.
25At least version 2.1 is required.
26
Junio C Hamano04a32862006-03-08 01:42:4327You should *never* do any work of your own on the branches that are
Junio C Hamanoba4b9282008-07-06 05:20:3128created by 'git-cvsimport'. By default initial import will create and populate a
Junio C Hamano04a32862006-03-08 01:42:4329"master" branch from the CVS repository's main branch which you're free
Junio C Hamanoba4b9282008-07-06 05:20:3130to work with; after that, you need to 'git-merge' incremental imports, or
Junio C Hamano9e52d4e2007-06-13 08:29:3331any CVS branches, yourself. It is advisable to specify a named remote via
32-r to separate and protect the incoming branches.
33
Junio C Hamanoba4b9282008-07-06 05:20:3134If you intend to set up a shared public repository that all developers can
35read/write, or if you want to use linkgit:git-cvsserver[1], then you
36probably want to make a bare clone of the imported repository,
37and use the clone as the shared repository.
38See linkgit:gitcvs-migration[7].
39
Junio C Hamano04a32862006-03-08 01:42:4340
Junio C Hamano1a4e8412005-12-27 08:17:2341OPTIONS
42-------
Junio C Hamano12a3a232007-04-07 10:18:1043-v::
44Verbosity: let 'cvsimport' report what it is doing.
45
Junio C Hamano1a4e8412005-12-27 08:17:2346-d <CVSROOT>::
47The root of the CVS archive. May be local (a simple path) or remote;
Junio C Hamanoa77a5132007-06-08 16:13:4448currently, only the :local:, :ext: and :pserver: access methods
Junio C Hamanoba4b9282008-07-06 05:20:3149are supported. If not given, 'git-cvsimport' will try to read it
Junio C Hamano12a3a232007-04-07 10:18:1050from `CVS/Root`. If no such file exists, it checks for the
51`CVSROOT` environment variable.
52
53<CVS_module>::
54The CVS module you want to import. Relative to <CVSROOT>.
Junio C Hamanoba4b9282008-07-06 05:20:3155If not given, 'git-cvsimport' tries to read it from
Junio C Hamano12a3a232007-04-07 10:18:1056`CVS/Repository`.
Junio C Hamano1a4e8412005-12-27 08:17:2357
58-C <target-dir>::
59 The git repository to import to. If the directory doesn't
60 exist, it will be created. Default is the current directory.
61
Junio C Hamano9e52d4e2007-06-13 08:29:3362-r <remote>::
63The git remote to import this CVS repository into.
64Moves all CVS branches into remotes/<remote>/<branch>
Junio C Hamanoba4b9282008-07-06 05:20:3165akin to the 'git-clone' "--use-separate-remote" option.
Junio C Hamano9e52d4e2007-06-13 08:29:3366
Junio C Hamano1a4e8412005-12-27 08:17:2367-o <branch-for-HEAD>::
Junio C Hamano9e52d4e2007-06-13 08:29:3368When no remote is specified (via -r) the 'HEAD' branch
69from CVS is imported to the 'origin' branch within the git
70repository, as 'HEAD' already has a special meaning for git.
71When a remote is specified the 'HEAD' branch is named
Junio C Hamanoba4b9282008-07-06 05:20:3172remotes/<remote>/master mirroring 'git-clone' behaviour.
Junio C Hamano9e52d4e2007-06-13 08:29:3373Use this option if you want to import into a different
74branch.
Junio C Hamano1a4e8412005-12-27 08:17:2375+
76Use '-o master' for continuing an import that was initially done by
77the old cvs2git tool.
78
Junio C Hamano12a3a232007-04-07 10:18:1079-i::
80Import-only: don't perform a checkout after importing. This option
81ensures the working directory and index remain untouched and will
82not create them if they do not exist.
83
84-k::
85Kill keywords: will extract files with '-kk' from the CVS archive
86to avoid noisy changesets. Highly recommended, but off by default
Junio C Hamanoa77a5132007-06-08 16:13:4487to preserve compatibility with early imported trees.
Junio C Hamano12a3a232007-04-07 10:18:1088
89-u::
90Convert underscores in tag and branch names to dots.
91
92-s <subst>::
93Substitute the character "/" in branch names with <subst>
94
Junio C Hamano1a4e8412005-12-27 08:17:2395-p <options-for-cvsps>::
96Additional options for cvsps.
97The options '-u' and '-A' are implicit and should not be used here.
98+
99If you need to pass multiple options, separate them with a comma.
100
Junio C Hamano12a3a232007-04-07 10:18:10101-z <fuzz>::
102Pass the timestamp fuzz factor to cvsps, in seconds. If unset,
103cvsps defaults to 300s.
104
Junio C Hamano1a4e8412005-12-27 08:17:23105-P <cvsps-output-file>::
106Instead of calling cvsps, read the provided cvsps output file. Useful
107for debugging or when cvsps is being handled outside cvsimport.
108
Junio C Hamanoa77a5132007-06-08 16:13:44109-m::
Junio C Hamano1a4e8412005-12-27 08:17:23110Attempt to detect merges based on the commit message. This option
Junio C Hamano4f1d8c42008-03-03 02:01:16111will enable default regexes that try to capture the source
Junio C Hamanoa77a5132007-06-08 16:13:44112branch name from the commit message.
Junio C Hamano1a4e8412005-12-27 08:17:23113
114-M <regex>::
115Attempt to detect merges based on the commit message with a custom
Junio C Hamanoefe3c632008-02-14 00:51:31116regex. It can be used with '-m' to enable the default regexes
117as well. You must escape forward slashes.
Junio C Hamano4f1d8c42008-03-03 02:01:16118+
119The regex must capture the source branch name in $1.
120+
121This option can be used several times to provide several detection regexes.
Junio C Hamano1a4e8412005-12-27 08:17:23122
Junio C Hamano12a3a232007-04-07 10:18:10123-S <regex>::
124Skip paths matching the regex.
Junio C Hamano1a4e8412005-12-27 08:17:23125
Junio C Hamanod1204f02007-01-08 11:18:48126-a::
127Import all commits, including recent ones. cvsimport by default
128skips commits that have a timestamp less than 10 minutes ago.
129
Junio C Hamanod1204f02007-01-08 11:18:48130-L <limit>::
131Limit the number of commits imported. Workaround for cases where
132cvsimport leaks memory.
133
Junio C Hamanodb911ee2007-02-28 08:13:52134-A <author-conv-file>::
135CVS by default uses the Unix username when writing its
136commit logs. Using this option and an author-conv-file
137in this format
Junio C Hamanoa725a532006-03-21 08:33:47138+
139---------
Junio C Hamano02d6fa52006-01-16 08:23:23140exon=Andreas Ericsson <ae@op5.se>
141spawn=Simon Pawn <spawn@frog-pond.org>
142
Junio C Hamanoa725a532006-03-21 08:33:47143---------
144+
Junio C Hamanoba4b9282008-07-06 05:20:31145'git-cvsimport' will make it appear as those authors had
Junio C Hamanoa725a532006-03-21 08:33:47146their GIT_AUTHOR_NAME and GIT_AUTHOR_EMAIL set properly
147all along.
148+
Junio C Hamano12a3a232007-04-07 10:18:10149For convenience, this data is saved to `$GIT_DIR/cvs-authors`
150each time the '-A' option is provided and read from that same
Junio C Hamanoba4b9282008-07-06 05:20:31151file each time 'git-cvsimport' is run.
Junio C Hamanoa725a532006-03-21 08:33:47152+
153It is not recommended to use this feature if you intend to
154export changes back to CVS again later with
Junio C Hamanoba4b9282008-07-06 05:20:31155'git-cvsexportcommit'.
Junio C Hamano02d6fa52006-01-16 08:23:23156
Junio C Hamano12a3a232007-04-07 10:18:10157-h::
158Print a short usage message and exit.
159
Junio C Hamano1a4e8412005-12-27 08:17:23160OUTPUT
161------
162If '-v' is specified, the script reports what it is doing.
163
164Otherwise, success is indicated the Unix way, i.e. by simply exiting with
165a zero exit status.
166
167
168Author
169------
170Written by Matthias Urlichs <smurf@smurf.noris.de>, with help from
171various participants of the git-list <git@vger.kernel.org>.
172
173Documentation
174--------------
175Documentation by Matthias Urlichs <smurf@smurf.noris.de>.
176
177GIT
178---
Junio C Hamanof7c042d2008-06-06 22:50:53179Part of the linkgit:git[1] suite