Subversion

darobin on 2002-01-29T16:01:05

I had been looking into Subversion recently, liking it a lot, and wondering if I should set it up and start working with it instead of CVS. Of course, I mostly thought about it and didn't get 'round to doing it but an article in this month's Linux Journal brought it right back to the front of my brain.

In short: Subversion is a replacement for CVS that is actually designed instead of left there to grown. Its approach is to version an entire tree instead of just on file base, which allows transactional commits, directory versioning, renaming, copying, etc... It uses WebDAV as its network protocol (and thus Apache/mod_dav as its server) which makes it an incredibly cool, froody, and performant solution, especially if Gerald Richter gets around to pluging Perl into mod_dav. I could go on forever, on paper the thing rocks and ought to reach 1.0 soonish. Oh, and it has metadata too.

I think I've now got so excited about this thing that I'll just have to set it up here. Has anyone here tested it already? Anyone working on a Perl interface to the client lib (should be easy, there are SWIG bindings apparently).


wow

jmm on 2002-01-29T17:13:44

I just folowed that link to look at Subversion. This looks great. I spent a lot of time on the CVS mailing list a few years ago. There was a constant stream of complaints about the shortcomings of CVS; alternating with the rationalizations of "the old guard" that refused to acknowledge that there were any problems, and that the complainants simply didn't understand the necessity for the limitations.

Karl Vogel and Jim Blandy make a great pair to be doing this. They were very active in the CVS group while I was watching.

While the ability to rename files and directories was the big problem that kept coming up; the thing that I most wanted has also been addressed. A commit in Subversion is atomic. I wrote a set of wrapper scripts around CVS to do a number of things; but ensuring that a commit would succeed completely or not be applied at all was the critical item that caused me to have to write a wrapper. (I acquired a global lock, tested the commit, applied the commit if it would succeed, and then released the lock. Fortunately, I had no need to permit non-local systems to have access to the repository, so the lock mechanism was fairly easy. The reason a commit without a lock might fail even after a check had determined that it would not is that someone else could commit in the interim and so the repository has changed and your commit might fail.)

They've done a great job

Wodin on 2002-01-29T20:48:55

I've been following Subversion(reading the dev list, occasionally posting) since they switched over to being self-hosting. Right now, it's basically better than CVS for local stuff, and it's getting consistently better all of the time. About all that's missing right now is a good merge facility, and that's going to change shortly. With the pace of development, it may even have changed today.

Nutshell being, if you're willing to expend the time to set it up(it requires Berkeley DB4 and a few other updates), it's well worth it.