Website transition to Subversion

Debian's website structure is currently still kept in CVS. CVS is getting pretty stale, and the inflexibility of CVS is impairing out ability to make anything but evolutionary changes to the website. Therefore, we are experimenting with a move to a different VCS: Subversion.

Subversion was chosen because its functionality and interface is not too different from CVS, while still giving users the possibility of a more advanced interface (e.g., through git-svnimport). See WebsiteVCSEvaluation for more information about the pros and cons of the different VCSs.

Current status

A test repository has been setup on alioth: The repository can be viewed through the web at Anonymous (read-only) access is provided via svn://, and registered users have write access via svn+ssh:// Please checkout only the trunk/webwml module, unless you know what you're doing.

Changes for users/translators

The user interface to Subversion is very similar to the CVS interface. To checkout a repository, use svn checkout instead of cvs checkout, to update an existing repository use svn update instead of cvs update, to commit a changed file use svn commit file/name. See also ?Subversion] in the Subversion book.

To checkout the repository, take the following steps:

For translators, the biggest change between CVS and Subversion probably is that in CVS, each file has its own versioning scheme, whereas in Subversion, a revision number refers to the state of the entire repository. In our old CVS repository, the version number of each file would only increase when that file itself was changed; e.g., the file english/index.wml was changed 78 times since it was first created, and thus has version number 1.79. In the new repository, the revision number will be something like r80711}}, indicating that 80711 changes have been committed in the past 10 years or so.  Obviously, the file {{{english/index.wml has only been changed in a very few of those 80711 commits.

To find out the revision in which a certain file has last been changed, use svn info file/name. This will return something like this:

Path: english/index.wml
Name: index.wml
URL: svn+ssh://
Repository Root: svn+ssh://
Repository UUID: a093df3b-0d2a-4daf-b7e4-2276095983ab
Revision: 80724
Node Kind: file
Schedule: normal
Last Changed Author: kreutzm
Last Changed Rev: 76462
Last Changed Date: 2007-08-03 22:54:07 +0200 (vr, 03 aug 2007)
Text Last Updated: 2008-04-30 20:50:23 +0200 (wo, 30 apr 2008)
Checksum: 615987710f08e5ccf5966a52df8b057b

The relevant line here is the one that says "Last Changed Rev: 76462", which gives the revision you should put in the translation header of any translations of the file english/index,wml. Note that the current version of the repository (gieven by the Revision: line) is 80724; apparently there have been more than 4000 changes to the repository since the file english/index.wml was last changed.

Technical implementation

Describe here what has changed about the working of the scripts.

Transition timeline

We need to allow some time between the announcement of the move and the actualy move to allow translators etc to commit any local changes they might have been working on locally. It should be possible to do the actual transition in a weekend: Conversion of the repository takes 12-24 hours, fixing all the revision in the translations headers takes another few hours.

Transition checklist