Skip to main content

prepare RCS project for processing with cvs2svn

Project description

rcs4cvs2svn prepares an RCS project for processing with cvs2svn.

rcs4cvs2svn is useful for developers who still have ancient source code floating around in RCS repositories and want to move it to a modern SCM system.

While rcs4cvs2svn does not provide any possibility to directly migrate to any other SCM system, it creates a copy of your RCS repository that can be processed by cvs2svn.

That way, you’ll end up with a Subversion repository, which already may be sufficient. Alternatively, Subversion offers a sound base for further migration to another SCM such as Git or Mercurial, as most SCM vendors provide tools to migrate from SVN but not from RCS.

(You can of course use rcs4cvs2svn as replacement for various rcs2cvs scripts floating around. Unlike many of these scripts, rcs4cvs2svn can process filenames with space characters and handles any errors it encounters.)

Usage

Usage is simple:

$ python rcs4cvs2svn /path/to/rcs/project /path/to/cvs/repository

There is a couple of options, for more information run:

$ python rcs4cvs2svn --help

Tutorial

This section describes how to migrate an RCS repository to CSV and then to Subversion.

First, create a simple RCS repository for a project called “hello” which contains a single file, “hello.txt” with 2 revisions:

$ mkdir -p hello/RCS
$ cd hello
$ echo "hello world!" >hello.txt
$ echo "Added greetings.\n." | ci -u hello.txt
$ co -l hello.txt
$ echo "hello space!" >>hello.txt
$ echo "Added more greetings.\n." | ci -u hello.txt

Now migrate the the RCS repository to CSV:

$ python rcs4cvs2svn.py hello/ /tmp/hello_cvs/

The output should be:

INFO:rcs4cvs2svn:create new CVS repository at "/tmp/hello_cvs/"
INFO:rcs4cvs2svn:migrated 1 files from "hello/" to "/tmp/hello_cvs/"

Because CVS still is a very dated way to manage a software project, let’s move on to the next step of evolution: Subversion. You will need cvs2svn, available from <http://cvs2svn.tigris.org/>.

While there are several ways to convert CVS to SVN, the easiest for our task is to simple create a SVN dumpfile containing the CVS as trunk:

$ cvs2svn --trunk-only --dumpfile hello.dump /tmp/hello_cvs/

Now you can create a SVN repository and load the trunk into it:

$ svnadmin create /tmp/hello_svn/
$ svnadmin load /tmp/hello_svn/ <hello.dump

Moving on to even more advanced SCM systems is left as an exercise to the reader.

License

Copyright (c) 2006-2011, Thomas Aglassinger. All rights reserved. Distributed under the BSD License.

Source code

The source code is available from <https://github.com/roskakori/rcs4cvs2svn>.

Version information

Version 1.1, 2010-07-04

  • Added automatic creation of CVS repository in case the target path does not already contain a CVSROOT folder. In order for this to work, the cvs command line client has to be installed.

  • Fixed protection bits in CVS which were copied from RCS and did make the files write protected (which was not an issue for converting to SVN but forced the user to remove the CVS for repeated conversion).

  • Cleaned up API. Simply import rcs4cvs2svn and call initCvsRepository() and convertRcsToCvs() as needed.

Version 1.0, 2010-07-04

  • Initial public release.

Version 0.9, 2006-05-01

  • Initial internal version used to convert some of my own projects.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rcs4cvs2svn-1.1.zip (6.7 kB view details)

Uploaded Source

File details

Details for the file rcs4cvs2svn-1.1.zip.

File metadata

  • Download URL: rcs4cvs2svn-1.1.zip
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for rcs4cvs2svn-1.1.zip
Algorithm Hash digest
SHA256 fb893ddb6d3c98e256a4656884b3417ec904767bbd7900a8c5f64122498e513f
MD5 6f6dc7d0aede8af32900abf1a78f013f
BLAKE2b-256 128812198bb64f91ad7c48da0d34f052bd9d3bc098f59731467a9c44ddc1a948

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page