cvs2git(1)

NAME

   cvs2git - convert a cvs repository into a git repository

SYNOPSIS

   cvs2git [OPTION]... OUTPUT-OPTIONS CVS-REPOS-PATH
   cvs2git [OPTION]... --options=PATH

DESCRIPTION

   Create  a  new  git repository based on the version history stored in a
   CVS repository. Each CVS commit will be mirrored in the git repository,
   including such information as date of commit and id of the committer.

   The  output  of  this  program are a "blobfile" and a "dumpfile", which
   together can be loaded into a git repository using "git fast-import".

   CVS-REPOS-PATH is the filesystem path of the part of the CVS repository
   that  you  want to convert.  This path doesn't have to be the top level
   directory of a CVS repository; it can  point  at  a  project  within  a
   repository,  in  which  case only that project will be converted.  This
   path or one of its parent directories has  to  contain  a  subdirectory
   called CVSROOT (though the CVSROOT directory can be empty).

   It  is  not  possible directly to convert a CVS repository to which you
   only have remote access, but the FAQ describes tools that may  be  used
   to create a local copy of a remote CVS repository.

OPTIONS

CONFIGURATION VIA OPTIONS FILE

   --options=path
          Read  the  conversion  options  from  path  instead  of from the
          command line. This option allows far more conversion flexibility
          than  can  be  achieved  using  the  command-line alone. See the
          documentation for more information. Only the following  command-
          line   options   are  allowed  in  combination  with  --options:
          -h/--help, --help-passes, --version,  -v/--verbose,  -q/--quiet,
          -p/--pass/--passes,    --dry-run,    --profile,    --trunk-only,
          --encoding, and --fallback-encoding. Options  are  processed  in
          the order specified on the command line.

OUTPUT OPTIONS

   --blobfile=path
          Write the "blob" data (containing revision contents) to path.

   --dumpfile=path
          Write the revision data (branches and commits) to path.

   --dry-run
          Do not create any output; just print what would happen.

   --cvs-domain=domain
          Enables  writing  cvsusername@domain styleeMail addresses to the
          git commits.

CONVERSION OPTIONS

   --trunk-only
          Convert only trunk commits, not tags nor branches.

   --encoding=enc
          Use encoding as the encoding for filenames,  log  messages,  and
          author  names  in  the  CVS  repos. This option may be specified
          multiple times, in which case the encodings are tried  in  order
          until      one      succeeds.      Default:      ascii.      See
          http://docs.python.org/lib/standard-encodings.html for a list of
          other standard encodings.

   --fallback-encoding=enc
          If  none  of  the encodings specified with --encoding succeed in
          decoding an author name or log message, then fall back to  using
          encoding  in  lossy 'replace' mode. Use of this option may cause
          information to be lost, but at least it allows the conversion to
          run  to completion. This option only affects the encoding of log
          messages and author names; there is  no  fallback  encoding  for
          filenames.  (By  using  an  --options  file,  it  is possible to
          specify a fallback encoding for filenames.) Default: disabled.

   --retain-conflicting-attic-files
          If a file appears both inside  an  outside  of  the  CVS  attic,
          retain  the attic version in an SVN subdirectory called 'Attic'.
          (Normally this situation is treated as a fatal error.)

SYMBOL HANDLING

   --symbol-transform=p:s
          Transform  RCS/CVS  symbol  names  before  entering  them   into
          Subversion.   pattern is a Python regexp pattern that is matches
          against the entire symbol name;  replacement  is  a  replacement
          using  Python's  regexp  reference  syntax.  You may specify any
          number of these options; they will be applied in the order given
          on the command line.

   --symbol-hints=path
          Read  symbol  conversion  hints from path. The format of path is
          the same as the format output by --write-symbol-info,  namely  a
          text  file  with  four whitespace-separated columns: project-id,
          symbol, conversion,  and  parent-lod-name.   project-id  is  the
          numerical  ID  of  the  project  to  which  the  symbol belongs,
          counting from 0. project-id  can  be  set  to  '.'  if  project-
          specificity is not needed. symbol-name is the name of the symbol
          being specified. conversion specifies how the symbol  should  be
          converted,  and  can  be  one  of the values 'branch', 'tag', or
          exclude'. If conversion is '.', then this rule does not  affect
          how  the symbol is converted. parent-lod-name is the name of the
          symbol from which this symbol should sprout, or '.trunk.' if the
          symbol  should  sprout from trunk. If parent-lod-name is omitted
          or '.', then this rule does not affect the preferred  parent  of
          this  symbol.  The file may contain blank lines or comment lines
          (lines whose first non-whitespace character is '#').

   --symbol-default=opt
          Specify how to convert ambiguous symbols (those that  appear  in
          the  CVS  archive  as  both  branches  and  tags).  opt  must be
          'heuristic' (decide how to treat each ambiguous symbol based  on
          whether it was used more often as a branch/tag in CVS), 'strict'
          (no default; every ambiguous symbol has to be resolved  manually
          using   --force-branch,  --force-tag,  or  --exclude),  'branch'
          (treat every ambiguous symbol as a branch), 'tag'  (treat  every
          ambiguous  symbol  as  a  tag),  or  'exclude'  (do  not convert
          ambiguous symbols). The default is 'heuristic'.

   --force-branch=regexp
          Force symbols whose names match regexp to be  branches.   regexp
          must match the whole symbol name.

   --force-tag=regexp
          Force  symbols  whose names match regexp to be tags. regexp must
          match the whole symbol name.

   --exclude=regexp
          Exclude branches and tags whose  names  match  regexp  from  the
          conversion. regexp must match the whole symbol name.

   --keep-trivial-imports
          Do not exclude branches that were only used for a single import.
          (By default such branches are excluded because they are  usually
          created by the inappropriate use of cvs import.)

SUBVERSION PROPERTIES

   --username=name
          Set  the default username to name when cvs2svn needs to generate
          a commit for which CVS does not record  the  original  username.
          This  happens when a branch or tag is created. The default is to
          use no author at all for such commits.

   --auto-props=file
          Specify a file in the format of Subversion's config file,  whose
          [auto-props]  section can be used to set arbitrary properties on
          files in the Subversion repository  based  on  their  filenames.
          (The [auto-props] section header must be present; other sections
          of the config file, including the enable-auto-props setting, are
          ignored.)   Filenames are matched to the filename patterns case-
          insensitively.

   --mime-types=file
          Specify an apache-style mime.types file  for  setting  svn:mime-
          type.

   --eol-from-mime-type
          For files that don't have the kb expansion mode but have a known
          mime type, set the eol-style based on the mime  type.  For  such
          files,  set  svn:eol-style  to  "native" if the mime type begins
          with "text/", and leave it  unset  (i.e.,  no  EOL  translation)
          otherwise.  Files  with  unknown  mime types are not affected by
          this option. This option has no effect unless  the  --mime-types
          option is also specified.

   --default-eol=style
          Set  svn:eol-style  to  style  for files that don't have the CVS
          kb' expansion  mode  and  whose  end-of-line  translation  mode
          hasn't  been  determined by one of the other options. style must
          be 'binary' (default), 'native', 'CRLF', 'LF', or 'CR'.

   --keywords-off
          By default, cvs2svn sets svn:keywords on CVS files to "author id
          date"  if the mode of the RCS file in question is either kv, kvl
          or unset. If you use the --keywords-off switch, cvs2svn will not
          set  svn:keywords  for  any  file. While this will not touch the
          keywords in the contents of  your  files,  Subversion  will  not
          expand them.

   --keep-cvsignore
          Include  .cvsignore  files  in  the  output.  (Normally they are
          unneeded  because  cvs2svn  sets  the  corresponding  svn:ignore
          properties.)

   --cvs-revnums
          Record CVS revision numbers as file properties in the Subversion
          repository. (Note that unless it is removed explicitly, the last
          CVS  revision  number  will remain associated with the file even
          after the file is changed within Subversion.)

EXTRACTION OPTIONS

   --force-keyword-mode=opt
          Keyword mode to force, or no to use  the  default.  opt  can  be
          'untouched'  (keep  literally  as  they  are recorded in the RCS
          file),  collapsed'  (retain  the  key  but  not   the   value),
          'expanded'  (fake  the way CVS expands them, even for binaries),
          'kept' (just let CVS deal with keywords).

   --use-cvs
          Use CVS to extract revision contents. This option is slower than
          --use-internal-co or --use-rcs.

   --use-rcs
          Use RCS 'co' to extract revision contents. This option is faster
          than --use-cvs but fails in some cases.

   --use-external-blob-generator
          Use an external Python program  to  extract  the  file  revision
          contents  from  the  RCS  files and output them to the blobfile.
          This option is much  faster  than  --use-rcs  or  --use-cvs  but
          leaves  keywords  unexpanded  and  requires a separate, seekable
          blob file to write to in parallel to the main cvs2git script.

ENVIRONMENT OPTIONS

   --tmpdir=path
          Set the path to use for temporary data. Default is  a  directory
          called cvs2svn-tmp under the current directory.

   --co=path
          Path to the co program. (co is needed if the --use-rcs option is
          used.)

   --cvs=path
          Path to the cvs program. (cvs is needed if the --use-cvs  option
          is used.)

PARTIAL CONVERSIONS

   --pass=pass
          Execute  only pass pass of the conversion. pass can be specified
          by name or by number (see --help-passes).

   -p [start]:[end], --passes=[start]:[end]
          Execute passes start through end of the conversion  (inclusive).
          start and end can be specified by name or by number (see --help-
          passes). If start or end is missing, it defaults to the first or
          last  pass,  respectively.  For  this to work the earlier passes
          must have been completed before on the same CVS repository,  and
          the generated data files must be in the temporary directory (see
          --tmpdir).

INFORMATION OPTIONS

   --version
          Print the version number.

   -h, --help
          Print the usage message and exit with success.

   --help-passes
          Print the numbers and names of the conversion  passes  and  exit
          with success.

   --man  Output  the  unix-style  manpage  for  this  program to standard
          output.

   -v, --verbose
          Print  more  information  while  running.  This  option  may  be
          specified twice to output voluminous debugging information.

   -q, --quiet
          Print  less  information  while  running.  This  option  may  be
          specified twice to suppress all non-error output.

   --write-symbol-info=path
          Write to  path  symbol  statistics  and  information  about  how
          symbols were converted during CollateSymbolsPass.

   --skip-cleanup
          Prevent the deletion of temporary files.

   --profile
          Profile with 'cProfile' (into file cvs2svn.cProfile).

FILES

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

AUTHORS

   Main authors are:
   C. Michael Pilato <[email protected]>
   Greg Stein <[email protected]>
   Branko ibej <[email protected]>
   Blair Zajac <[email protected]>
   Max Bowsher <[email protected]>
   Brian Fitzpatrick <[email protected]>
   Tobias Ringstrm <[email protected]>
   Karl Fogel <[email protected]>
   Erik Hlsmann <[email protected]>
   David Summers <[email protected]>
   Michael Haggerty <[email protected]>

   Manpage was written for the Debian GNU/Linux  system  by  Laszlo  'GCS'
   Boszormenyi <[email protected]> (but may be used by others).

SEE ALSO

   cvs(1), git(1), git-fast-import(1)



Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.


Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.

Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.


Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.

Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.


Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.

Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.