I highly recommend good version control software for all automation developers, even for companies with just one developer. Â I think for most automation companies the requirements are similar to these:
- Runs well on Windows (most automation vendors use only Windows)
- Easy to install
- Good documentation
- Easy to learn, including easy to learn concepts and how to handle typical version control situations
- Good tools support such as GUI clients, support for Visual Studio and/or Eclipse, web interfaces, and links to bug tracking systems
- Software is mature and reliable
- Available support
- Distributed team support is not needed
I recommend looking at Subversion first. Â It meets all the requirements. Â It runs well on Windows, is easy to install, has excellent documentation, and is widely used. Â Tool support is excellent; highlights include the famous TortoiseSvn GUI client and the Trac light weight project management and bug tracking software. Â Best of all, Subversion (like all the other projects mentioned in this post) is open source, so there are no license hassles, no limitations on named users, and no yearly maintenance fees.
Trac, on the other hand, isn’t so easy to install. Â I’ve covered easier ways to install Subversion and Trac before . Â Another approach I am looking at is running Subversion and Trac under XAMPP, the portable Apache/MySQL stack. Â If it’s easy to do, this might be the best approach.
Distributed version control systems are definitely taking off. Â Git seems to be in the lead, with Mercurial second. Â They do have some major advantages over Subversion (which I hope to cover in detail sometime this year). Â You should more concerned with which system works best for you, not what other developers (who probably have very different needs) are using.
Git normally isn’t the best choice for automation developers. Â It doesn’t run well on Windows (you have to use cygwin (which is like running Linux) or msysgit (which is incomplete and poorly documented)), is still lacking in tool support, and appears to be harder to learn than Mercurial or Subversion.
Git does have someÂ advantages; for example, it can reliably track CVS or Subversion repositories, and make a Subversion repository track a git one. Â I will be using git for a project that requires creating a Subversion repository that tracks a CVS repository (and having a git repository that tracks the CVS repository is a nice extra).
Fossil is an interesting new distributed version control system with integrated bug tracking and wiki (similar to combining Mercurial with Trac). Â It doesn’t have the tool support, documentation,Â and widespread use of git, Mercurial, or Subversion, but it is much smaller (a single small executable), runs well under Windows, and has a GUI available via the browser (Web 2.0!).
I’d love toÂ try out and do a detailed comparison of Subversion, git, Mercurial, and Fossil, but my realistic plan is:
- Get Subversion and Trac running under XAMPP
- Get git running for the CVS repository tracking project
and then, of course, write some posts about my experiences.
April 2, 2009 No Comments
JavaWorld has a hands-on overview of CVS, Subversion, Mercurial, and Bazaar here.
Note 4/21/2011:Â I’d say the most popular open source VCS’s are:
- For centralized, Subversion
- For distributed (DVCS), git (most popular) and Mercurial.
February 25, 2008 No Comments
Version Control and Software Configuration Management Resources
In the end, good developers and good processes matter more than the tools. So here are two good sources for information and answers on version control and software configuration management: comp.software.config-mgmt newsgroup (low level of traffic, but I’ve seen some good conversations there) and CMCrossroads.
Commerical Version Control Software
A few years ago, I did an extensive look at commercial version control software. The two I was most impressed with were Perforce and AccuRev. Perforce is a traditional VCS, with a reputation for speed and good support. AccuRev has an innovative approach (streams) . Both are worth consideration, but are $750/developer or more, plus yearly maintenance fees. At work, I’ve been very happy with Subversion, but Larry O’Brian has seen some speed bumps.
I’ve been using Subversion, and have been very happy with it. I still think it is an excellent version control system for most automation companies, and I will be doing a series of blog posts using it. Some of its good points:
- It’s free (and open source)
- Its centralized approach fits the model of most automation developers (unlike open source projects, which tend to be highly distributed).
- It runs well on Windows (unlike some open source version control systems)
- It has good, free documentation
- It is widely available for hosting (
for example, it’s the only VCS available on Webfaction’s Control Panel)
- It has excellent tool support, including on Windows
- It is constantly updated (V1.5 will have substantial improvements)
Innovative Version Control Systems
The open source version control field has been very fertile, with several innovative approaches. I’d say the open source side has been more innovative than the commercial side. The ones that have caught my attention are git (of Linux fame, and right now probably the “hot” one), darcs, mercurial, and bazaar-ng. All of these systems are designed for distributed development, unlike most version control which is based around a central server. Later I plan on looking into them in-depth, and trying one out – I have a few project ideas that would benefit from a more distributed approach.
January 18, 2008 2 Comments