Although we have had a CVS server set up since at least 2005 (it was there when I started), it is used inconsistently at best.And using a version control system inconsistently is worse, in some ways, than no version control system at all: you can’t rely on the repository to have the most recent information, so you have to compare the repository to other likely sources of updated information (the development and production environments).
What are the barriers to adoption for version control? In part, it is unfamiliarity. In part, it is just one more step between the developer and a quick, harmless edit to a file. I’d group both of those as ease-of-use issues. The other barrier is a lack of understanding about the benefits version control provides.
The ease-of-use issue is exacerbated by a lack of good interface tools. We are using TortoiseCVS, and another developer and I are using the CVS features built in to Eclipse. I think that using Eclipse works well, and I’ve even created a couple simple ANT scripts to roll files out to the development environment once I’ve tested them in my sandbox.
The majority of other developers are using Dreamweaver, and tend to work directly in the development environment (rather than a sandbox). It may not seem like a big deal to switch applications for the benefits of CVS, but numerous times a day it could get tedious:
- Checkout module to sandbox in Windows Explorer using TortoiseCVS.
- Switch to Dreamweaver.
- Switch to Windows Explorer to Update/Commit.
- Copy files from sandbox to development environment.
I have been evaluating CVS for Dreamweaver. Its UI could stand a bit of spit-and-polish, but I think it might work for us. (I am open to suggestions.)
How do I convince the other developers of the benefits of using version control? That might be even trickier. The other developers seem not to experience my frustration because the files they are working with on dev are usually the most current versions. And although the low-tech versioning schema of storing dozens of backup files is messy and risky, it hasn’t actually presented any problems. A single developer tends to work on a single application, so no one, to my knowledge, has ever overwritten someone else’s updates. In this environment, do we really need CVS?
I think that we do. Although we haven’t had any problems with overwriting another developer’s code, or found out-dated pages with security issues floating around on the production server, why take those risks? Version control can solve those problems for us, as well as providing other benefits (such as accessing any previous version of the code).
I know developers who use version control at home for their personal ego web sites. Overzealous? Not really. I think any shop worth its salt uses a formal version control system.