[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