1CVS2SVN(1) User Commands CVS2SVN(1)
2
3
4
6 cvs2svn - convert a CVS repository into a Subversion repository
7
9 cvs2svn [OPTION]... OUTPUT-OPTION CVS-REPOS-PATH
10 cvs2svn [OPTION]... --options=PATH
11
13 Create a new Subversion repository based on the version history stored
14 in a CVS repository. Each CVS commit will be mirrored in the Subversion
15 repository, including such information as date of commit and id of the
16 committer.
17
18 CVS-REPOS-PATH is the filesystem path of the part of the CVS repository
19 that you want to convert. It is not possible to convert a CVS reposi‐
20 tory to which you only have remote access; see the FAQ for more infor‐
21 mation. This path doesn't have to be the top level directory of a CVS
22 repository; it can point at a project within a repository, in which
23 case only that project will be converted. This path or one of its par‐
24 ent directories has to contain a subdirectory called CVSROOT (though
25 the CVSROOT directory can be empty).
26
27 Multiple CVS repositories can be converted into a single Subversion
28 repository in a single run of cvs2svn, but only by using an --options
29 file.
30
33 --options=path
34 Read the conversion options from path instead of from the com‐
35 mand line. This option allows far more conversion flexibility
36 than can be achieved using the command-line alone. See the docu‐
37 mentation for more information. Only the following command-line
38 options are allowed in combination with --options: -h/--help,
39 --help-passes, --version, -v/--verbose, -q/--quiet,
40 -p/--pass/--passes, --dry-run, --profile, --trunk-only, --encod‐
41 ing, and --fallback-encoding. Options are processed in the order
42 specified on the command line.
43
45 -s path, --svnrepos=path
46 Write the output of the conversion into a Subversion repository
47 located at path. This option causes a new Subversion repository
48 to be created at path unless the --existing-svnrepos option is
49 also used.
50
51 --existing-svnrepos
52 Load the converted CVS repository into an existing Subversion
53 repository, instead of creating a new repository. (This option
54 should be used in combination with -s/--svnrepos.) The reposi‐
55 tory must either be empty or contain no paths that overlap with
56 those that will result from the conversion. Please note that you
57 need write permission for the repository files.
58
59 --fs-type=type
60 Pass --fs-type=type to "svnadmin create" when creating a new
61 repository.
62
63 --bdb-txn-nosync
64 Pass --bdb-txn-nosync to "svnadmin create" when creating a new
65 BDB-style Subversion repository.
66
67 --create-option=opt
68 Pass opt to "svnadmin create" when creating a new Subversion
69 repository (can be specified multiple times to pass multiple
70 options).
71
72 --dumpfile=path
73 Just produce a dumpfile; don't commit to an SVN repository.
74 Write the dumpfile to path.
75
76 --dry-run
77 Do not create a repository or a dumpfile; just print the details
78 of what cvs2svn would do if it were really converting your
79 repository.
80
82 --trunk-only
83 Convert only trunk commits, not tags nor branches.
84
85 --encoding=enc
86 Use encoding as the encoding for filenames, log messages, and
87 author names in the CVS repos. This option may be specified mul‐
88 tiple times, in which case the encodings are tried in order
89 until one succeeds. Default: ascii. See
90 http://docs.python.org/lib/standard-encodings.html for a list of
91 other standard encodings.
92
93 --fallback-encoding=enc
94 If none of the encodings specified with --encoding succeed in
95 decoding an author name or log message, then fall back to using
96 encoding in lossy 'replace' mode. Use of this option may cause
97 information to be lost, but at least it allows the conversion to
98 run to completion. This option only affects the encoding of log
99 messages and author names; there is no fallback encoding for
100 filenames. (By using an --options file, it is possible to spec‐
101 ify a fallback encoding for filenames.) Default: disabled.
102
103 --retain-conflicting-attic-files
104 If a file appears both inside an outside of the CVS attic,
105 retain the attic version in an SVN subdirectory called 'Attic'.
106 (Normally this situation is treated as a fatal error.)
107
108 --trunk=path
109 Set the top-level path to use for trunk in the Subversion repos‐
110 itory. The default is trunk.
111
112 --branches=path
113 Set the top-level path to use for branches in the Subversion
114 repository. The default is branches.
115
116 --tags=path
117 Set the top-level path to use for tags in the Subversion reposi‐
118 tory. The default is tags.
119
120 --include-empty-directories
121 Treat empty subdirectories within the CVS repository as actual
122 directories, creating them when the parent directory is created
123 and removing them if and when the parent directory is pruned.
124
125 --no-prune
126 When all files are deleted from a directory in the Subversion
127 repository, don't delete the empty directory (the default is to
128 delete any empty directories).
129
130 --no-cross-branch-commits
131 Prevent the creation of commits that affect files on multiple
132 branches at once.
133
135 --symbol-transform=p:s
136 Transform RCS/CVS symbol names before entering them into Subver‐
137 sion. pattern is a Python regexp pattern that is matches
138 against the entire symbol name; replacement is a replacement
139 using Python's regexp reference syntax. You may specify any num‐
140 ber of these options; they will be applied in the order given on
141 the command line.
142
143 --symbol-hints=path
144 Read symbol conversion hints from path. The format of path is
145 the same as the format output by --write-symbol-info, namely a
146 text file with four whitespace-separated columns: project-id,
147 symbol, conversion, and parent-lod-name. project-id is the
148 numerical ID of the project to which the symbol belongs, count‐
149 ing from 0. project-id can be set to '.' if project-specificity
150 is not needed. symbol-name is the name of the symbol being spec‐
151 ified. conversion specifies how the symbol should be converted,
152 and can be one of the values 'branch', 'tag', or ´exclude'. If
153 conversion is '.', then this rule does not affect how the symbol
154 is converted. parent-lod-name is the name of the symbol from
155 which this symbol should sprout, or '.trunk.' if the symbol
156 should sprout from trunk. If parent-lod-name is omitted or '.',
157 then this rule does not affect the preferred parent of this sym‐
158 bol. The file may contain blank lines or comment lines (lines
159 whose first non-whitespace character is '#').
160
161 --symbol-default=opt
162 Specify how to convert ambiguous symbols (those that appear in
163 the CVS archive as both branches and tags). opt must be 'heuris‐
164 tic' (decide how to treat each ambiguous symbol based on whether
165 it was used more often as a branch/tag in CVS), 'strict' (no
166 default; every ambiguous symbol has to be resolved manually
167 using --force-branch, --force-tag, or --exclude), 'branch'
168 (treat every ambiguous symbol as a branch), 'tag' (treat every
169 ambiguous symbol as a tag), or 'exclude' (do not convert ambigu‐
170 ous symbols). The default is 'heuristic'.
171
172 --force-branch=regexp
173 Force symbols whose names match regexp to be branches. regexp
174 must match the whole symbol name.
175
176 --force-tag=regexp
177 Force symbols whose names match regexp to be tags. regexp must
178 match the whole symbol name.
179
180 --exclude=regexp
181 Exclude branches and tags whose names match regexp from the con‐
182 version. regexp must match the whole symbol name.
183
184 --keep-trivial-imports
185 Do not exclude branches that were only used for a single import.
186 (By default such branches are excluded because they are usually
187 created by the inappropriate use of cvs import.)
188
190 --username=name
191 Set the default username to name when cvs2svn needs to generate
192 a commit for which CVS does not record the original username.
193 This happens when a branch or tag is created. The default is to
194 use no author at all for such commits.
195
196 --auto-props=file
197 Specify a file in the format of Subversion's config file, whose
198 [auto-props] section can be used to set arbitrary properties on
199 files in the Subversion repository based on their filenames.
200 (The [auto-props] section header must be present; other sections
201 of the config file, including the enable-auto-props setting, are
202 ignored.) Filenames are matched to the filename patterns case-
203 insensitively.
204
205 --mime-types=file
206 Specify an apache-style mime.types file for setting svn:mime-
207 type.
208
209 --eol-from-mime-type
210 For files that don't have the kb expansion mode but have a known
211 mime type, set the eol-style based on the mime type. For such
212 files, set svn:eol-style to "native" if the mime type begins
213 with "text/", and leave it unset (i.e., no EOL translation) oth‐
214 erwise. Files with unknown mime types are not affected by this
215 option. This option has no effect unless the --mime-types option
216 is also specified.
217
218 --default-eol=style
219 Set svn:eol-style to style for files that don't have the CVS
220 ´kb' expansion mode and whose end-of-line translation mode
221 hasn't been determined by one of the other options. style must
222 be 'binary' (default), 'native', 'CRLF', 'LF', or 'CR'.
223
224 --keywords-off
225 By default, cvs2svn sets svn:keywords on CVS files to "author id
226 date" if the mode of the RCS file in question is either kv, kvl
227 or unset. If you use the --keywords-off switch, cvs2svn will not
228 set svn:keywords for any file. While this will not touch the
229 keywords in the contents of your files, Subversion will not
230 expand them.
231
232 --keep-cvsignore
233 Include .cvsignore files in the output. (Normally they are
234 unneeded because cvs2svn sets the corresponding svn:ignore prop‐
235 erties.)
236
237 --cvs-revnums
238 Record CVS revision numbers as file properties in the Subversion
239 repository. (Note that unless it is removed explicitly, the last
240 CVS revision number will remain associated with the file even
241 after the file is changed within Subversion.)
242
244 --use-internal-co
245 Use internal code to extract revision contents. This is up to
246 50% faster than using --use-rcs, but needs a lot of disk space:
247 roughly the size of your CVS repository plus the peak size of a
248 complete checkout of the repository with all branches that
249 existed and still had commits pending at a given time. This
250 option is the default.
251
252 --use-cvs
253 Use CVS to extract revision contents. This option is slower than
254 --use-internal-co or --use-rcs.
255
256 --use-rcs
257 Use RCS 'co' to extract revision contents. This option is faster
258 than --use-cvs but fails in some cases.
259
261 --tmpdir=path
262 Set the path to use for temporary data. Default is a directory
263 called cvs2svn-tmp under the current directory.
264
265 --co=path
266 Path to the co program. (co is needed if the --use-rcs option is
267 used.)
268
269 --cvs=path
270 Path to the cvs program. (cvs is needed if the --use-cvs option
271 is used.)
272
273 --svnadmin=path
274 Path to the svnadmin program. (svnadmin is needed when the
275 -s/--svnrepos output option is used.)
276
278 --pass=pass
279 Execute only pass pass of the conversion. pass can be specified
280 by name or by number (see --help-passes).
281
282 -p [start]:[end], --passes=[start]:[end]
283 Execute passes start through end of the conversion (inclusive).
284 start and end can be specified by name or by number (see --help-
285 passes). If start or end is missing, it defaults to the first or
286 last pass, respectively. For this to work the earlier passes
287 must have been completed before on the same CVS repository, and
288 the generated data files must be in the temporary directory (see
289 --tmpdir).
290
292 --version
293 Print the version number.
294
295 -h, --help
296 Print the usage message and exit with success.
297
298 --help-passes
299 Print the numbers and names of the conversion passes and exit
300 with success.
301
302 --man Output the unix-style manpage for this program to standard out‐
303 put.
304
305 -v, --verbose
306 Print more information while running. This option may be speci‐
307 fied twice to output voluminous debugging information.
308
309 -q, --quiet
310 Print less information while running. This option may be speci‐
311 fied twice to suppress all non-error output.
312
313 --write-symbol-info=path
314 Write to path symbol statistics and information about how sym‐
315 bols were converted during CollateSymbolsPass.
316
317 --skip-cleanup
318 Prevent the deletion of temporary files.
319
320 --profile
321 Profile with 'cProfile' (into file cvs2svn.cProfile).
322
324 A directory called cvs2svn-tmp (or the directory specified by --tmpdir)
325 is used as scratch space for temporary data files.
326
328 Main authors are:
329 C. Michael Pilato <cmpilato@collab.net>
330 Greg Stein <gstein@lyra.org>
331 Branko Čibej <brane@xbc.nu>
332 Blair Zajac <blair@orcaware.com>
333 Max Bowsher <maxb@ukf.net>
334 Brian Fitzpatrick <fitz@red-bean.com>
335 Tobias Ringström <tobias@ringstrom.mine.nu>
336 Karl Fogel <kfogel@collab.net>
337 Erik Hülsmann <e.huelsmann@gmx.net>
338 David Summers <david@summersoft.fay.ar.us>
339 Michael Haggerty <mhagger@alum.mit.edu>
340
341 Manpage was written for the Debian GNU/Linux system by Laszlo 'GCS'
342 Boszormenyi <gcs@lsc.hu> (but may be used by others).
343
345 cvs(1), svn(1), svnadmin(1)
346
347
348
349Version 2.4.0-dev Feb 02, 2011 CVS2SVN(1)