This is an old revision of the document!


This page describes the FreeBSD Subversion to CVS exporter AKA svn2cvs.

Currently the page is work in progress and should not be relied on to be accurate!

The basic purpose of the FreeBSD svn2cvs system is to replicate commits in the FreeBSD Subversion repository to the old CVS repository. svn2cvs preserves full commit information (as much as CVS allows) by exporting:

  • commit actualy change content
  • commit comment
  • commit date / time
  • commit author

svn2cvs exporter basically works by examining each subversion commit and then replicating it as good as possible into CVS.

svn2cvs consists of the following parts:

* The main svn2cvs python script export.py * Modified version of cvs * Local FreeBSD svn mirror updated every 5 seconds * Checked out version of each active CVS branch

The modified version of CVS is changed from stock CVS as follows:

* If the environment variable CVS_TIMESTAMP is set, use that as the commit timestamp instead of the current 'wall clock'. * If the environment variable CVS_AUTHOR is set, use that to set author in CVS commit instead if the actual user which are perfomring the commit action (svn2cvs) * Do not allow 'cvs imports' to be run on the 'ncvs' repository.

TODO

It doesn't like when a file is 'replaced' in Subversion.

The following files in the FreeBSD repoisotry suffers from this, as of this writing:

  • src/tools/build/options/WITH_BIND_LIBS
  • src/contrib/file/magic2mime
  • svn2cvs.1249828177.txt.gz
  • Last modified: 2009/08/09 14:29
  • by SimonNielsen