Nkuvu has asked for the wisdom of the Perl Monks concerning the following question:
In response to the recent poll, I started wondering about different qualities of version control systems.
From my own experience, I can only really address Rational ClearCase. I've used ClearCase for a few years on projects at work (on Windows machines) and it has done just about everything that the company has wanted to do. Labels, version history, branches, and even protecting versions from checkout without a problem report number.
The syntax for finding a particular version can be rather complex1, although the command-line ClearTool provides a decent approach to writing Perl scripts to simplify the process. Some co-workers have written scripts that take two version labels and produce a list of every version of every file that changed between those versions.
It's possible that this is actually considered to be a failing of ClearCase -- perhaps other version control systems have built in tools to do these types of processes. But it's also possible that other version control systems do not provide command-line access to allow programmers to write tools to make up for any deficiencies.
In short, what makes a good version control system "good?" What are some of the things you look for when evaluating a new version control system?
1For a specific example of the cleartool syntax, I have a snippet from a script used to describe a ClearCase object:
The formatting command is certainly not something I would want to write up every time, but in a script it's all quite simple.## The following can be found from within the cleartool environment (t +ype man fmt_ccase) ## %l = Labels - For versions, all attached labels; the null string ot +herwise. ## %En = Element name ## %Sn = Short name ## %u = Login name of the user associated with the event. ## %Fu = Full name of the user. ## %a = All attached attributes. my $command = qq/cleartool find $object -version "version(\\main\\LATE +ST)" /; $command .= qq/-exec "cleartool describe -fmt """%n %Fu %a %l\\n""" " +"%CLEARCASE_XPN%"""/;
Notes: I was originally thinking that this should go in Meditations, but tye pointed out that it's more of a question than a presentation of information. Also, jdporter reminded me to search for an existing node on the subject, but I didn't see anything relevant when searching for "version control" (and looked back through nodes to March 2006). Finally, this has been a subject that I've been pondering for a few days -- I decided to just write something up, even if I don't feel that it's very eloquent.
Added: An additional question. I've looked at the links from andreas1234567 and eyepopslikeamosquito (both links very helpful, thanks) and I'd like to know how many of these features are actually used. For instance, do you typically work with Signed Revisions? Symlinks? EOL conversions?
My own experience has been that these things are almost never encountered -- however I am basing this experience from one company's practices, on only a few different projects. We've never had to deal with EOL conversions because all systems are Windows. Nor have symlinks entered the picture. Even file renames are rare.
Do you run into the limits of your VCS often?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Evaluating version control systems
by andreas1234567 (Vicar) on May 22, 2008 at 19:12 UTC | |
by eyepopslikeamosquito (Archbishop) on May 22, 2008 at 21:21 UTC | |
|
Re: Evaluating version control systems
by dragonchild (Archbishop) on May 22, 2008 at 19:57 UTC | |
|
Re: Evaluating version control systems
by samtregar (Abbot) on May 22, 2008 at 21:13 UTC | |
|
Re: Evaluating version control systems
by moritz (Cardinal) on May 22, 2008 at 18:59 UTC | |
|
Re: [OT] Evaluating version control systems
by Zadeh (Beadle) on May 22, 2008 at 22:10 UTC | |
|
Re: Evaluating version control systems
by EvanCarroll (Chaplain) on May 22, 2008 at 20:00 UTC | |
|
Re: Evaluating version control systems
by starbolin (Hermit) on May 24, 2008 at 03:00 UTC |