June 2007

At Long Last

BS Computer Science, 2007

Posted Wednesday, June 20, 2007 08:34:56 UTC in Personal - Permanent link

More Caveats and Features

I have run across some other interesting things in my testing that I would like to point out:

Continuing my ramblings on the differences between these systems, I must say that bzr's command set is very close to subversion. hg, on the other hand, has a decidedly different workflow.

I realized that I didn't comment on git in my last post. While this is yet another option, it is only supported on Windows under cygwin (yuck!), so I won't be trying it.

Posted Tuesday, June 19, 2007 10:23:06 UTC in Personal Technical - Permanent link

The Elusive Perfect VCS

This is the first in what I hope to be a series of posts about my search for a VCS that fits my needs. I'm sure yet another discussion on this topic is the last thing the web needs, but hey, you're reading it.

I have been using Subversion for both personal and group projects for quite a while now. It is very nice, especially compared to the archaic CVS, but it has one feature that is glaringly absent: merge management. It also does not allow for disconnected operation, which is annoying when you like to work on the go.

There is an svnmerge.py that is in the subversion repository, but is not officially part of subversion. It also only allows you to merge changes within the same subversion respository, so its usefulness to me is limited.

What I need in a VCS, and what gave rise to this adventure, is the ability to maintain what is often called a "vendor branch." Specifically, I want the ability to:

This is what got me looking at the so-called third-generation VCSs. The three most popular are:

Bazaar and Mercurial are both written in Python, whereas Darcs is written in everyone's favorite language, Haskell. Darcs is also based on an "theory of patches," whereas Bazaar and Mercurial are more like subversion in how they track changes.

At this point it should be clear that interoperability is key for these new VCS. Especially important is interoperability with subversion, as it has become almost a gold-standard in the open-source world.

Both Bazaar and Mercurial, like all good Python apps, support plugins. Darcs, as far as I can tell does not. Bazaar has a number of interop plugins, including bzr-svn, which supports two-way merging. There is a set of scripts available for Mercurial called hgsvn which supports pulling from subversion repositories. Darcs does not have anything built-in, but the people behind Darcs have put together this nifty script called Tailor which can convert between almost anything and almost anything else.

In my case, I have for the moment chosen to go with bzr-svn. I hit one small snag, however. bzr-svn requires patches to the Python bindings for Subversion that are not included in any released version of Subversion. I use Windows, and I attempted and was shamefully unsuccessful in recompiling with these patches. However, someone else had better luck. After installing his bindings, I was able to check a subversion repository out using bzr. I have not yet thoroughly tested it, however.

I think that does it for this installment. I may have more to say on this topic in the future.

Posted Monday, June 18, 2007 15:59:42 UTC in Personal Technical - Permanent link
Matthew Loar
matthew@loar.name
Last modified and spun 2009-06-19