Source Control
Originally posted 2005-07-13 05:49:40
Last night, I gave a presentation to The Jacksonville Developers User Group titled “Source Control Using CVS, Subversion, and AccuRev.” You can download the Powerpoint file here, or view it online here. We had a good discussion, good questions, and I hope I made a few new converts. I felt a few tense moments when I discovered I’d left my laptop power cord at home, and the new battery I’d just put into it had died. I’d forgotten that when I just close the lid, Windows goes into standby . . . and stays there until the battery is dead. My iBook doesn’t do that. Luckily, I had the latest version of my presentation on my keychain USB key, and the facility where the meeting was held had a PC in the podium with a USB extension cord ready and waiting. Phew.
During the presentation, I explained that I’d led the project at my company to transition away from CVS to another source control tool, as our development model ached from some of CVS’s constraints. I mentioned that we’d put together 20 criteria that we measured all potential tools against. The audience wanted to hear those criteria, which I hadn’t included in the presentation, so here they are:
- Eclipse plugin
- Concurrent development
- Windows server version
- Windows client version
- Solaris client version (for automated builds)
- Private sandboxes in the repository
- Easy backups/restores (including daily backups)
- Changesets
- Code “levels” (i.e. not just “in repository” vs. “not in repository”, but “in test” vs. “in QA” vs. “in production”)
- Rollbacks
- Snapshots
- Graphical tools for all operations
- Integration with defect tracking
- Easy administration
- Ant compatibility
- Standalone client for non-developers to check in help files
- If a locking model, administrator can unlock any locked file
- Scriptable via API or command line
- File renaming
- Directory renaming
We ultimately settled on AccuRev and have been pleased with it. It has a command line, so you can use it fine as is in Ant, but I created Ant tasks for it to make Ant usage easier. You can find them here. So far, I’ve implemented only the “populate” (extract) command, since that’s all we’ve needed, but I’d love some feedback.
I took three Ubuntu CD sets as door prizes, and noticed that they were the last taken. I suppose that’s to be expected in a predominantly .NET user group. At least they were taken at all.