[tpm] RFC: Which Centralized VCS[s] are you using now or in future?

Stuart Watt stuart at morungos.com
Thu Jul 8 07:52:18 PDT 2010


  I know you don't want a contest, but Subversion is not as bad as 
described, really. I've used it for 7 years, our team used it for three 
now, and we have never had a real problem.

Having said what follows, starting today, I probably would use Git. The 
command names are not easy to grasp, but merging for complex 
non-hierarchically organized projects does appear to be very 
significantly better than Subversion. For a well-structured single 
project, though, Subversion is fine, stable, relatively efficient, and 
very widely supported. There are many good clients, some of which are 
"manager friendly".

On 7/8/2010 10:23 AM, Abram Hindle wrote:
> This is based on my experience:
> SVN
> - perl enough
> - works fine in emacs
> - works fine in eclipse
> - Not very simple, has stupid URLs
They're not so bad - if you use HTTP/HTTPS, which almost everyone does, 
as the Apache plugins are far the easiest way to handle a centralised 
repository. (Our URLs are, like: http://svn.mydomain.com/svn/myproject). 
You can run a builtin server with its own protocol, which is marginally 
lighter in bandwidth, but Apache does make it easy to integrate into a 
development platform.
> - Works over HTTP
> - more flexible than CVS in terms of sharing a repo but still annoying
> to setup
> - Braindead heavyweight branching, it so bad that people worry about
> costs of using the feature
Branching is not heavyweight. An alias is made and subsequent deltas. A 
branch of 100Mb of stuff takes less than a second. Believe me, we do 
that a lot. The repository does not grow significantly for a branch.
> - Awful backend formats that are hard to fix and easy to corrupt
I've never had a single backend corruption in 7 years of running 
Subversion. It's relatively easy to wedge a (local) working copy, 
especially if you accidentally delete one of its hidden folders, or, 
worse, copy a folder using the file system forgetting not to copy the 
.svn crap. Then you may need to wipe the working copy and check out again.

(Obviously, someone as technically paranoid as I am does backups by 
using the textual delta dump tool for safety; you can simply back up the 
repository, but for the same reason I back up database data in text, I 
do the same with Subversion. The backup file produced is textual and 
contains all the deltas, so it is possible to edit the repository, and 
rebuild it from this, if you really want to delete some stuff, for 
example -- this is rare enough I have done it only 2-3 times ever.)
> - Random NFS glitches depending on your backend format
NFS is not always a good bet for file locks, but this would be bad for 
any VCS. If you don't use file shares for the repository, not a problem. 
An old/broken NFS could explain corrupted data. The safest centralized 
way is *definitely* local file system access to the web server with the 
Apache Subversion modules, and HTTP/HTTPS access from there.
> - Very little benefit over CVS
Far better handling of deleting and merging. Very good support for 
binary files. (e.g., Word and Excel files are supported fine, and 
changes are made as deltas even for binary files, so small edits are 
handled well). HTTP/HTTPS support -- seriously, you need this to enable 
access for off-site work, CVS ports are often blocked in wifi zones.
> - Commit tracking

The other thing I like about Apache access is that it has nice user 
control systems. For example, I can allow some users read access to 
parts of the system, and stop others tagging stuff. Believe me, with 
some of our developers, it can be nice to stop them changing certain 
files...

All the best
Stuart


More information about the toronto-pm mailing list