Thursday, May 13, 2004
Tracking changes
Well, it took several hours, but I was able to compile the Subversion client. I ended up compiling OpenSSL twice because the Subversion configuration script couldn't find the libraries, but once I got that straightened out, it compiled fine even if it did take a few hours (not that I have the fastest machine on the planet).
Subversion is a version managment tool. You place files under Subversion (or CVS or GNU Arch, or ClearCase or any number of other programs) and it allows you to track changes to documents. You check out the current documents, make your changes, check them back in. The various differences between the tools deals with concurrent checkouts (some require you to lock the files when checking them out so others can't edit the file you are editing, others will attempt to merge all editing changes back in) and whether you can version directories, and how easy it is to manage different versions of a document. Usually used to track source code changes, but it can be used to document changes for just about any document type.
I'm satisfied with CVS. Heck, the only reason I started using CVS was to have the ability to work on some projects on multiple machines and not have to schlep tarballs from machine to machine to keep in sync. Before that, I never really bothered to use source control (except for the year I worked at IBM, but then, my exposure to the actual source code was minimal—all I was doing was writing test cases).
Mark doesn't care for CVS, and after looking at GNU Arch, went with Subversion. This was a few years ago when installing Subversion wasn't a trivial process (as my Calculus teacher used to say). It in fact, required quite a bit of mojo to get working, and thus was one reason I stayed away from it. The other being the rather hefty requirements in hardware.
Now, recently I used GNU Arch for a project for Mark. Even though later it would be placed under Subversion, I wanted to get a feel for how GNU Arch worked. It didn't require nearly the resources of Subversion, and was easier to compile and get running (although the requirements for Subversion have been falling, and the installation procedure has gotten easier).
And between CVS (which doesn't allow you to track directories, nor allow you to change file names without loosing the history of the file, nor handle change sets well, or … ) and GNU Arch (which does all that) I would rather use CVS. GNU Arch, while having features not present in CVS, is still rather clunky to use. Under CVS, when I commit my changes:
% cvs commit cgi
(which commits any changes I made to my CGI library) it will pop up an editor and let me write what changes I've made (nearly all revision tracking software will allow you to annotate what the changes where), then upload the current version to the respository (where the master copy is kept; Subversion works simularly). Under GNU Arch however …
% tla commit commit: no log file provided (see `make-log')
See, what you are supposed to do is:
% tla make-log ++log.guide--mainline--1.0--spc@conman.org--2004-seminole % vi ++log.guide--mainline--1.0--spc@conman.org--2004-seminole Error detected while processing command line: Not an editor command: +log.guide--mainline--1.0--spc@conman.org--2004-seminole Press RETURN or enter command to continue % vi ./++log.guide--mainline--1.0--spc@conman.org--2004-seminole
Make the annotations, then I can:
% tla commit
Annoying having to do an extra step (and trying to use joe
on that filename causes it to dump core—I'm thinking that the plus signs
are causing some problems, and my copy of joe
is rather old),
but I can somewhat see why it may be done that way. Generate the
log file, then edit it while making your changes, but hey, if
tla commit
doesn't find the log file it's looking for, it
should at least generate the file and let you edit it then, during
the commit
.
There are other annoying aspects of GNU Arch, and the amount of diskspace it uses is almost twice as much as subversion (and interally uses filename of ridiculous length). So now for the rest of Mark's stuff, I'll be updating directly into his Subversion repository, and I'll keep using CVS for what I'm currently using it for. I don't have plans on converting to GNU Arch any time soon.