Login | Register
My pages Projects Community openCollabNet

Project home

2020-03-13: This site is going to be decommissioned and shut down very soon. Please copy and archive any data you wish to keep ASAP

If you were registered and logged in, you could join this project.

Summary save subversion commits to cvs repository
Category scm
License GNU General Public License
Owner(s) dpavlin

Message from the owner(s)

CVS repository of this tool here is done from SubVersion repository using this tool. So, it works for me :-) YMMV
Documentation is also embeded in script, and you can view it by calling perldoc svn2cvs.pl.

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



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


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.


``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.


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.


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

First release available to public

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).

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.

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

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

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


Dobrica Pavlinusic <dpavlin@rot13.org>



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