changeset 256:649a93bb45ae

Fiddle with the sections on SVN and CVS.
author Bryan O'Sullivan <bos@serpentine.com>
date Sun, 03 Jun 2007 09:49:14 -0700
parents 9c49615e8dcb
children d9d29e7cf5bd
files en/intro.tex
diffstat 1 files changed, 22 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/en/intro.tex	Wed May 30 22:19:56 2007 -0700
+++ b/en/intro.tex	Sun Jun 03 09:49:14 2007 -0700
@@ -372,13 +372,20 @@
 one to learn to use the other.  Both tools are portable to all popular
 operating systems.
 
+Subversion lacks a history-aware merge capability, forcing its users
+to manually track exactly which revisions have been merged between
+branches.  If users fail to do this, or make mistakes, they face the
+prospect of manually resolving merges with unnecessary conflicts.
+
 Mercurial has a substantial performance advantage over Subversion on
 every revision control operation I have benchmarked.  I have measured
 its advantage as ranging from a factor of two to a factor of six when
 compared with Subversion~1.4.3's \emph{ra\_local} file store, which is
 the fastest access method available).  In more realistic deployments
 involving a network-based store, Subversion will be at a substantially
-larger disadvantage.
+larger disadvantage.  Because many Subversion commands must talk to
+the server and Subversion does not have useful replication facilities,
+server capacity becomes a bottleneck for modestly large projects.
 
 Additionally, Subversion incurs a substantial storage overhead to
 avoid network transactions for a few common operations, such as
@@ -388,10 +395,6 @@
 than, a Mercurial repository and working directory, even though the
 Mercurial repository contains a complete history of the project.
 
-Subversion does not have a history-aware merge capability, forcing its
-users to know exactly which revisions to merge between branches.  This
-shortcoming is scheduled to be addressed in version 1.5.
-
 Subversion is currently more widely supported by
 revision-control-aware third party tools than is Mercurial, although
 this gap is closing.  Like Mercurial, Subversion has an excellent user
@@ -440,13 +443,20 @@
 
 It has a centralised client/server architecture.  It does not group
 related file changes into atomic commits, making it easy for people to
-``break the build''.  It has a muddled and incoherent notion of tags
-and branches that I will not attempt to even describe.  It does not
-support renaming of files or directories well, making it easy to
-corrupt a repository.  It has almost no internal consistency checking
-capabilities, so it is usually not even possible to tell whether or
-how a repository is corrupt.  I would not recommend CVS for any
-project, existing or new.
+``break the build'': one person can successfully commit part of a
+change and then be blocked by the need for a merge, causing other
+people to see only a portion of the work they intended to do.  This
+also affects how you work with project history.  If you want to see
+all of the modifications someone made as part of a task, you will need
+to manually inspect the descriptions and timestamps of the changes
+made to each file involved (if you even know what those files were).
+
+CVS has a muddled notion of tags and branches that I will not attempt
+to even describe.  It does not support renaming of files or
+directories well, making it easy to corrupt a repository.  It has
+almost no internal consistency checking capabilities, so it is usually
+not even possible to tell whether or how a repository is corrupt.  I
+would not recommend CVS for any project, existing or new.
 
 Mercurial can import CVS revision history.  However, there are a few
 caveats that apply; these are true of every other revision control