As most of you know, CVS is a version control management system for source code. Well, you can use it for almost any kind of file versioning, but it really works best with plain text source code files. It supports branching, tagging, merging, etc. It's open source, it's free, it runs on pretty much every computing platform, and of course, it comes standard with Mac OS X and Mac OS X Server.
Now, I'm not going to get into the hows and whats of CVS, that's beyond the scope of this article, or this column really. But I will talk about why I use CVS on Mac OS X Server. Again, keep in mind that my environment is a heavy Windows environment. Traditionally, our PC / non-Mainframe developers have used Microsoft's SourceSafe for version control. This works well as long as your primary environment is Visual Studio. You can connect other IDEs into Visual SourceSafe, but it really works best with Visual Studio.
However, we have had more of our mainframe tools being moved over to Eclipse-based environments. Now, Eclipse is a great environment, I like it a lot, especially for Java development, (no surprise there, Eclipse is designed for Java development). One of the things Eclipse works really well with is, of course, CVS. It has excellent support for CVS built into the product. Now, while good CVS support on Unix systems is pretty much a given, getting CVS working on Windows can be...tricky. Eclipse has this all built in, including support for CVS over SSH.
Normally, if you want to host your CVS repository on a single server, you would use the pserver protocol. It's a nice little protocol, but it's not secure, and you have to maintain a dedicated user/password database for it. If you have only a few developers, that's not a big deal. If you have a lot, and you want encryption, thats a problem.
The answer, of course, is SSH. CVS directly supports using SSH as the transport protocol to get to the repository. Eclipse supports this quite nicely.
So all of this is very nice, but why Mac OS X Server? Almost any Unix system, or even windows, with CVSNT can be a CVS repository. Yes, but Mac OS X Server, thanks to its Active Directory integration, makes things simpler.
First, it already has CVS. So, with a bit of even rudimentary CVS knowledge, you can set up your repositories with ease. Secondly, it can use Active Directory or Open Directory as its directory service for authentication, including for SSH. So, instead of having to keep a separate CVS user database, you just use the one you already have. While you aren't going to easily get SingleSignon SSH from a Windows machine, at least your CVS users can just use their standard logins to get to the repository in a secure fashion. Secure = good.
Finally, because of its support for ACLs, you can easily manage access to Mac OS X Server CVS repositories from the standard Active Directory MMC snap-ins. Add groups, change groups, etc., and it all just works.
In my own experiences, using Mac OS X Server as a CVS repository has been nothing but painless, and the developers like that they don't have to remember yet another login that has to be changed ever 60 days. Like many other things on Mac OS X, it just works.
Next page: Ray Noorda: a Remembrance