« a somewhat crazy notion | Main | unthinkable futures from the past »

June 26, 2008

TrackBack

TrackBack URL for this entry:
http://www.typepad.com/services/trackback/6a00e54efca38e883400e5538f7a268834

Listed below are links to weblogs that reference Git - version control done right:

Comments

Payton Quackenbush

Another distributed VC system we were testing out was Bazaar (http://bazaar-vcs.org). It's written in Python, has a very similar similar command set to Subversion, except that it understands branch history and easily merges branches (push and pull). I think we decided against it in favor of Subversion only due to it not being ready for prime time 2 years ago, and not having support for Trac (http://trac.edgewall.org).

One big downside with the distributed approach is that it's hard to see which changes are in each branch (everyone is in their own sandbox basically), and since there's no central repository, you can't just get an entire listing of each branch that exists and what's changed in that branch. On the other hand, some people like this invisibility...

GordonMcGregor

Hi Payton,

Thanks for taking the time to comment. I'd looked at Bazaar a few months ago, too. It doesn't appear to have quite the name recognition at the moment that Git and Hg are attracting, not sure why. Git gets the attention no doubt because of the Linux kernel using it, as well as Wine and X. There seems to be a lot of cross pollination of ideas between the 3 tools.

I'd be curious to see what the performance of the three are, given how much of a big deal Torvalds makes about the need for Git to be very fast. It looks like both Mercurial and Bazaar are written in Python, compared to Git being coded in C. It is a bit of an open question in my mind if the performance really makes a difference for chip sized projects (maybe different to the linux kernel's issues and requirements in terms of the scale of the problems)

Your comment about the ability to hide changes is true. In general, the whole issue of how you ensure everything gets rolled up correctly to the final chip and how the tape-out repository gets assembled together seems like an interesting problem for a distributed system, that I haven't really got quite straight in my mind. The processes that need to be layered on top of it would be key, rather than just which tool you pick. I've been aware of similar issues with centralised repositories, where the wrong revision id's listed in a configuration file, meant that the wrong chip was taped out. Probably similar checks and controls need to be in place for a distributed system as are needed for a centralised approach, to avoid this sort of fundamental error. The SCM tool is just that, a tool after all.

There does seem to be the potential for entire sections of code or revisions to be 'lost' in someone's local directory, never to see it to the final production version, but that could happen with the centralised server too.

Payton Quackenbush

You are correct, Bazaar performance two years ago wasn't great. Apparently they've spent a bunch of their cycles improving that, but I'm sure it's nowhere close to git, which was designed from the ground up with performance in mind (and I like how persistent Linus is on never getting corrupted data into the system). I found bzr had an easy to learn usage model though.

Josh Scheid

What is the advantage that you are looking for in a distributed versus centralized system? Is it just better fine-grain branching capabilities? I've used one centralized system (Perforce, non-free) that has more robust branching capabilities than svn. So far {git, hg, bzr} seem like feature overkill, at least for traditional commercial projects that can maintain a central server.

GordonMcGregor

Hello Josh, thanks for taking the time to comment. Easier branching is certainly a welcome feature, in any source control tool. My general experience is that most users are scared of branching and avoid it - mainly because of the complexities in the process for most tools.

The other advantage that is significant that git claims is the performance. Similar to a recent post on compiler performance, a slow version control tool can reduce the amount of work you get done. If it takes 20 minutes to do an update and compare, you switch off to do something else, rather than keeping engaged. Git at least claims to address this, even for large projects. I haven't had a chance to evaluate that, but I know that slow source control eats away at the time you have to work each day.

P. Row

Hi Gordon,

thanks for your angles on git. I found the hardest part to be the re-thinking of concepts while re-using the old terms. It doesn't help that git branches carry their name more deservedly than svn branches. That's nice for git but the term is teinted by the technicalities one has come to expect and with branches, tags, revisions, commits, heads etc mostly being the same but then again in some important aspects not at all ... that's why it's so hard to get one's head around it, I guess. Anyway, I found your article one of the more helpful ones, to do just that.

Verify your Comment

Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been posted. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

Post a comment

My Photo

subscribe

  • Email subscribtion

    Enter your email address:

    Delivered by FeedBurner