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:

  1. Eclipse plugin
  2. Concurrent development
  3. Windows server version
  4. Windows client version
  5. Solaris client version (for automated builds)
  6. Private sandboxes in the repository
  7. Easy backups/restores (including daily backups)
  8. Changesets
  9. Code “levels” (i.e. not just “in repository” vs. “not in repository”, but “in test” vs. “in QA” vs. “in production”)
  10. Rollbacks
  11. Snapshots
  12. Graphical tools for all operations
  13. Integration with defect tracking
  14. Easy administration
  15. Ant compatibility
  16. Standalone client for non-developers to check in help files
  17. If a locking model, administrator can unlock any locked file
  18. Scriptable via API or command line
  19. File renaming
  20. 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.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.