1git-cvsimport(1) 2================ 3 4NAME 5---- 6git-cvsimport - Salvage your data out of another SCM people love to hate 7 8 9SYNOPSIS 10-------- 11[verse] 12'git-cvsimport' [-o <branch-for-HEAD>] [-h] [-v] [-d <CVSROOT>] 13 [-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>] 16 [-r <remote>] [<CVS_module>] 17 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 27You should *never* do any work of your own on the branches that are 28created by git-cvsimport. By default initial import will create and populate a 29"master" branch from the CVS repository's main branch which you're free 30to work with; after that, you need to 'git merge' incremental imports, or 31any CVS branches, yourself. It is advisable to specify a named remote via 32-r to separate and protect the incoming branches. 33 34If 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 40 41OPTIONS 42------- 43-v:: 44 Verbosity: let 'cvsimport' report what it is doing. 45 46-d <CVSROOT>:: 47 The root of the CVS archive. May be local (a simple path) or remote; 48 currently, only the :local:, :ext: and :pserver: access methods 49 are supported. If not given, git-cvsimport will try to read it 50 from `CVS/Root`. If no such file exists, it checks for the 51 `CVSROOT` environment variable. 52 53<CVS_module>:: 54 The CVS module you want to import. Relative to <CVSROOT>. 55 If not given, git-cvsimport tries to read it from 56 `CVS/Repository`. 57 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 62-r <remote>:: 63 The git remote to import this CVS repository into. 64 Moves all CVS branches into remotes/<remote>/<branch> 65 akin to the git-clone --use-separate-remote option. 66 67-o <branch-for-HEAD>:: 68 When no remote is specified (via -r) the 'HEAD' branch 69 from CVS is imported to the 'origin' branch within the git 70 repository, as 'HEAD' already has a special meaning for git. 71 When a remote is specified the 'HEAD' branch is named 72 remotes/<remote>/master mirroring git-clone behaviour. 73 Use this option if you want to import into a different 74 branch. 75+ 76Use '-o master' for continuing an import that was initially done by 77the old cvs2git tool. 78 79-i:: 80 Import-only: don't perform a checkout after importing. This option 81 ensures the working directory and index remain untouched and will 82 not create them if they do not exist. 83 84-k:: 85 Kill keywords: will extract files with '-kk' from the CVS archive 86 to avoid noisy changesets. Highly recommended, but off by default 87 to preserve compatibility with early imported trees. 88 89-u:: 90 Convert underscores in tag and branch names to dots. 91 92-s <subst>:: 93 Substitute the character "/" in branch names with <subst> 94 95-p <options-for-cvsps>:: 96 Additional options for cvsps. 97 The 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 101-z <fuzz>:: 102 Pass the timestamp fuzz factor to cvsps, in seconds. If unset, 103 cvsps defaults to 300s. 104 105-P <cvsps-output-file>:: 106 Instead of calling cvsps, read the provided cvsps output file. Useful 107 for debugging or when cvsps is being handled outside cvsimport. 108 109-m:: 110 Attempt to detect merges based on the commit message. This option 111 will enable default regexes that try to capture the source 112 branch name from the commit message. 113 114-M <regex>:: 115 Attempt to detect merges based on the commit message with a custom 116 regex. It can be used with '-m' to enable the default regexes 117 as well. You must escape forward slashes. 118+ 119The regex must capture the source branch name in $1. 120+ 121This option can be used several times to provide several detection regexes. 122 123-S <regex>:: 124 Skip paths matching the regex. 125 126-a:: 127 Import all commits, including recent ones. cvsimport by default 128 skips commits that have a timestamp less than 10 minutes ago. 129 130-L <limit>:: 131 Limit the number of commits imported. Workaround for cases where 132 cvsimport leaks memory. 133 134-A <author-conv-file>:: 135 CVS by default uses the Unix username when writing its 136 commit logs. Using this option and an author-conv-file 137 in this format 138+ 139--------- 140 exon=Andreas Ericsson <ae@op5.se> 141 spawn=Simon Pawn <spawn@frog-pond.org> 142 143--------- 144+ 145git-cvsimport will make it appear as those authors had 146their GIT_AUTHOR_NAME and GIT_AUTHOR_EMAIL set properly 147all along. 148+ 149For convenience, this data is saved to `$GIT_DIR/cvs-authors` 150each time the '-A' option is provided and read from that same 151file each time git-cvsimport is run. 152+ 153It is not recommended to use this feature if you intend to 154export changes back to CVS again later with 155linkgit:git-cvsexportcommit[1]. 156 157-h:: 158 Print a short usage message and exit. 159 160OUTPUT 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--- 179Part of the linkgit:git[1] suite