svn2cvs - save subversion commits to (read-only) cvs repository

SYNOPSIS

  ./svn2cvs.pl SVN_URL CVSROOT CVSREPOSITORY

Usage example (used to self-host this script):

  ./svn2cvs.pl file:///home/dpavlin/private/svn/svn2cvs/trunk/ \
               :pserver:dpavlin@cvs.tigris.org:/cvs svn2cvs/src

DESCRIPTION

This script will allows you to commit changes made to Subversion repository to (read-only) CVS repository manually or from Subversion's post-commit hook.

It's using .svnrev file (which will be created on first run) in CVSROOT/CVSREPOSITORY to store last Subversion revision which was committed into CVS.

One run will do following things:

If checkout fails for some reason (e.g. flaky ssh connection), you will still have valid CVS repository, so all you have to do is run svn2cvs.pl again.

WARNINGS

``Cheap'' copy operations in Subversion are not at all cheap in CVS. They will create multiple copies of files in CVS repository!

This script assume that you want to sync your trunk (or any other directory for that matter) directory with CVS, not root of your subversion. This might be considered bug, but since common practise is to have directories trunk and branches in svn and source code in them, it's not serious limitation.

RELATED PROJECTS

Subversion http://subversion.tigris.org/ version control system that is a compelling replacement for CVS in the open source community.

cvs2svn http://cvs2svn.tigris.org/ converts a CVS repository to a Subversion repository. It is designed for one-time conversions, not for repeated synchronizations between CVS and Subversion.

CHANGES

Versions of this utility are actually Subversion repository revisions, so they might not be in sequence.

r10
First release available to public

r15
Addition of comprehensive documentation, fixes for quoting in commit messages, and support for skipping changes which are not under current Subversion checkout root (e.g. branches).

r18
Support for importing your svn into empty CVS repository (it will first create module and than dump all revisions). Group commit operations to save round-trips to CVS server. Documentation improvements and other small fixes.

r20
Fixed path deduction (overlap between Subversion reporistory and CVS checkout).

r21
Use update -d instead of checkout after import. Added fixes by Paul Egan <paulegan@mail.com> for XMLin and fixing working directory.

r22
Rewritten import from revision 0 to empty repository, better importing of deep directory structures, initial support for recovery from partial commit.

AUTHOR

Dobrica Pavlinusic <dpavlin@rot13.org>

http://www.rot13.org/~dpavlin/

LICENSE

This product is licensed under GNU Public License (GPL) v2 or later.