1CVS2SVN(1)                       User Commands                      CVS2SVN(1)
2
3
4

NAME

6       cvs2svn - convert a CVS repository into a Subversion repository
7

SYNOPSIS

9       cvs2svn [OPTION]... OUTPUT-OPTION CVS-REPOS-PATH
10       cvs2svn [OPTION]... --options=PATH
11

DESCRIPTION

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

OPTIONS

CONFIGURATION VIA OPTIONS FILE

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

OUTPUT OPTIONS

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

CONVERSION OPTIONS

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

SYMBOL HANDLING

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

SUBVERSION PROPERTIES

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

EXTRACTION OPTIONS

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

ENVIRONMENT OPTIONS

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

PARTIAL CONVERSIONS

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

INFORMATION OPTIONS

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

FILES

324       A directory called cvs2svn-tmp (or the directory specified by --tmpdir)
325       is used as scratch space for temporary data files.
326

AUTHORS

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

SEE ALSO

345       cvs(1), svn(1), svnadmin(1)
346
347
348
349Version 2.4.0-dev                Feb 02, 2011                       CVS2SVN(1)
Impressum