Exactly one year ago today, I
wrote about Git, Mercurial, and Bzr. I have long been interested in VCS, and looked at the three main DVCS systems back then.
A Quick Review
Mercurial was, and for the moment, remains, my main VCS. Bzr remains really uninteresting; I don't see it offering anything compelling that Mercurial or Git can't do. My Git gripes mainly revolved around its interface and documentation. Also, I do have Windows people using my software, and need a plausible solution for them, even though I personally do no development on that platform.
Ted Tso
wrote his own article in reply to mine, noting that the Git community had identified many of the same things I had ans was working on them.
I
followed up to Ted with:
... So if Ted's right, and a year from now git is easier to use, better documented, more featureful, and runs well on Windows, it won't be that hard to switch over and preserve history. Ted's the sort of person that usually is right, so maybe I should starting looking at hg2git right now.
So I guess that means it's time to start looking at Git again.
This is rather rambly, I know. It's late and I want to get these thoughts down before going to sleep...
Looking at Git
I started at the
Git wikipedia page for an overview of the software. It linked to two Google Tech Talks about Git:
one by Linus Torvalds and
another by Randal Schwartz. Of the two, I found Linus' more entertaining and Randal's more informative. Linus' point that CVS is fundamentally broken, and that SVN trying to be "a better CVS" (an early goal of svn, at least) means it too is fundamentally broken, strikes me as quite sound.
One other interesting tidbit I picked up is that git can show you where functions have moved from one file to another, thanks to its rename-detection heuristic. That sounds really sweet, and is the best reason I've yet heard for Git's stubborn refusal to track renames.
The Landscape
I've been following Mercurial and Darcs somewhat, and not paying much attention to Git. Mercurial has been adding small features, and is nearing version 1.0. Darcs has completed a major overhaul both of its repository format and internal algorithms and is nearing version 2.0, and appears to have finally killed the doppleganger (aka conflict spinlock) bug for good.
Git, meanwhile, seems to have made strides in usability and documentation in its 1.5.x versions.
One thing particularly interesting to me is: what projects are using the different VCSs. High-profile projects now using Mercurial include OpenSolaris, OpenJDK (Java 7), and Mozilla's projects. Git has, of course, the Linux kernel. It also has just about everything associated with freedesktop.org, including X. Also a ton of Unixy stuff.
Both Mercurial and Git communities are working on TortoiseHg/TortoiseGit types of GUIs for Windows users. Git appears to have a sane Windows port now as well, putting it on pretty much even footing with Mercurial and Darcs there. However, I didn't spot anything with obvious Windows ties in the Git "what projects use git" pages.
The greater speed of Mercurial and Git -- even for pushing and pulling small patches -- likely will keep me away from Darcs for the moment.
Onwards...
As time allows (I do have
other things keeping me busy), I plan to install git and work through some tutorials and try to use it in practice as much as possible, to get a good feel for it.
Future
It is beneficial to be using a VCS that is popular, though that is certainly not a major criterion for me. I refuse to use SVN because its lack of distributed functionality makes it too unproductive to be useful. But it looks like Git is gaining a lot of traction these days, especially in Debian circles, which also makes it more interesting.
I notice that Ted did convert e2fsprogs over to git as he said he might, incidentally.
Comments
Thu, 15.05.2008 05:01
In general, it is impossible t o prove that something is rand om, and difficult to ascertain that something is suffi [...]
Thu, 15.05.2008 00:24
There should be testing of pat ched programs before they are released, when feasible. This bug could have been caug [...]
Wed, 14.05.2008 16:58
Sure, it's only modifiable if it's a pointer... but pointers are the only practical way to pass many things: strin [...]
Wed, 14.05.2008 16:47
"Especially since you may be d ealing with functions that cal l other functions 5 deep, and one of those functions m [...]
Wed, 14.05.2008 16:22
Imagine that you are knowingly breaking the law by not apply ing for the appropriate visas. Not only that, but you [...]
Tue, 13.05.2008 18:59
I have heard that argument bef ore, and frankly, I'm unconvin ced. I am not aware of any Am erican jurisdiction wher [...]
Tue, 13.05.2008 18:55
What a wonderful point and pos t. You're quite right, and it 's high time we all revisit th e notion that legality d [...]
Tue, 13.05.2008 18:52
Quite right. Article fixed ab ove.