The three virtues of a programmer: Laziness, Impatience, and Hubris. – Larry Wall

Legacy:Trystan/11 24 02

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search

11/24/02 Source Code Control[edit]

Wow, it's been a rough week. Anyone actually following this journal will have noted zero entries during this past week. Between work, life, and everything else, it's been enough of a pain in the ass. Somewhere along the line I decided our team needed to have CVS up and running before we went much further.

If you've been living in a cave you might not have heard of or know what CVS is. CVS stands for "Concurrent Versioning System", or something to that effect. It's a SCCS, aka "Source Code Control System." (Ever notice that programmers screw themselves by giving everything strange names with no apparent real world meaning?) CVS takes your code, compares it to past revisions, stores it and stores a message about what you did to it, basically. It allows you to tag your code at a central point in time so that you can always return to it, and it allows for the safe storage of your code. Most importantly, however, it allows multiple developers to work on your code at the same time.

Considering we have three coders this was a crucial necessity for us. I spent most of this week attempting to get CVS up and running in what is known as pserver mode. This failed miserably. I'm not sure why I was stuck on pserver mode (pserver is a fancy way of saying password server) but I was, and I resolutely keep banging my head against the wall trying to get it to work. I've got quite a few resources available to me so setting up a dedicated Linux box to act as a CVS server isn't hard – but writing up instructions on how to set up WinCVS, Cygwin, and the remote accounts so that they would work was a complete bitch.

So why CVS? Most importantly, it's free. Obviously we can't sell our mod – except perhaps to Epic. (Dream a little dream..) There were some systems I'd have considered purchasing if they didn't cost literally thousands of dollars in licensing fees - and if I could've got their demonstration systems up and running. I'm not sure what about SCCS has to be so complex and difficult, but I ran through ClearCase, RCS, Subversion, BitKeeper, and multiple loads of CVS before I got this final load up and running through the :ext: protocol. I estimate my time on it at about twenty hours just in the past week alone.

Secondly CVS is used throughout the world by open source projects. That means there's at least a little bit of information out there about it. Frankly, though, I didn't find much information for those who had never worked with it. Until now my day job and exposure to SCCS was SourceSafe by Microsoft. And that's not the same, trust me. I was lucky: I found a GPLed version of a book written specifically about CVS. It was this book that finally got me and my fellow coders up and running on CVS. (This book is mirrored at; if a Wiki admin would like I can mirror it here but it's not directly related to Unreal modding.) There's some neat things you can do with CVS too; I receive an email each and every time a commit is made to the repository, for instance. This allows me to catch up on what's been done, model, texture, code wise, without having to hunt down and talk to the people involved. (We've got people across every time zone, I'm positive. :)) We can also set up web based access to our repository, though I've not found one yet that has significant security in place.

All in all CVS will save my ass at some point, I'm positive. "I changed something but I don't know what." Well, then, I just go and do a diff between my source now and my source then. It might be something as innocent as a semicolon in the wrong spot, I don't know. But CVS can tell me – and will.

I recommend SCCS to any project which is going to be complex in any way.

More information on CVS is available at the Wiki page, CVS. There's not much there but if you do want help setting up CVS I can try. I'm no CVS expert but at least I've been through it now. :D

Return to Trystan/Developer Journal.