[gs-devel] Ghostscript repository migration (cvs->svn)

Ralph Giles ralph.giles at artifex.com
Fri Dec 16 20:33:58 PST 2005


All,

As approved at the last Artifex staff meeting, we are migrating the 
Ghostscript source repository from CVS to Subversion.

I've done a test migration of the CVS tree as it was last night.
Please try this out to make sure this is working including doing
test commits. I'll replace this with a fresh conversion next weekend,
at which point we will switch officially.

Anonymous read access is available at the following urls:

  http://svn.ghostscript.com:8080/ghostscript/trunk/gs/
  http://cvs.ghostscript.com/cgi-bin/viewcvs.cgi/ghostscript/

Those with current write access should also be able to commit to 
checkouts from this url:

  svn+ssh://svn.ghostscript.com/svn/ghostscript/trunk/gs/

Subversion is a new version control system built on the same work
model as CVS, but designed to avoid some of CVSs limitations. The
commandline tool is called 'svn' and available from 
http://subversion.tigris.org, and is packaged for all reasonably
recent linux distributions.

Plugins for Windows Explorer (TortoiseSVN), Visual Studio (anksvn),
MacOS X Finder (scplugin), etc. are available (Apple's XCode ships
with Subversion support).

The full manual is available online, and in paper from from O'Reilly

  http://svnbook.red-bean.com/

There's also a quick tutorial on some of the finer points here:

  http://www.onlamp.com/pub/a/onlamp/2004/08/19/subversiontips.html

As a brief introduction, svn uses the same working model as cvs. There's 
a central tree, people check out copies of it (or subtrees of it), make 
changes, and then commit the changes into the repository, where others
will see them.

Instead of the complicated CVSROOT and Repository strings cvs uses to 
address different trees, svn uses a single url. Also, where cvs just 
manages a collection of indepentedly versioned files, each svn 
repository consists solely of a single versioned tree with copy-on-
write. Everything that's different about svn flows from this model.
This means commits are atomic, and one can freely move, rename, and 
re-add both files and directories. Tags and branches are handled just
as separate parts of that tree rather than as named revisions and 
parallel file trees, respectively, as in CVS.

By convention, a subversion repository has a couple of directories at 
the top level:

/trunk/    <- this is where current development code lives
/tags/     <- tags go in here, made just by copying the trunk of the 
              time to a new directory name here. By policy these
              are never changed, just created with a fresh copy.
/branches/ <- likewise, branches are made by copying trunk or a tag
              here, updating things with changes.

It's not really standard, but we might want to consider uploading 
official tarballs and binaries to a /releases/ subtree. We've done
this at xiph.org and it's worked well. Makes the repository larger,
but it's easier to find things, handle change notification, and
leaves one less thing to back up.

Anyway, please try it out so we can correct any issues before we
switch.

Cheers,
 -r



More information about the gs-devel mailing list