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 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%"""/;
The formatting command is certainly not something I would want to write up every time, but in a script it's all quite simple.

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?


In reply to Evaluating version control systems by Nkuvu

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.