Experimenting with Git

February 26th, 2008

I’ve been writing about Git a bit lately.

I’ve decided to switch some of my Debian work over to it to start with, as well as some of my other projects.

Although I was thoroughly frustrated with Git a year ago, now I am quite pleased with it. What’s different? The documentation is a LOT better. So far I have only found one manpage (git-show) that omits lots of its options. The system is friendlier, keystroke-happier, and powerful.

Compared to Mercurial, I’ve found some nice things:

In-directory branching. I didn’t expect to care about this, since both git and hg permit lightweight clones. But it turns out to be so easy to use that it is great. Especially since I don’t have to setup multiple branch repos on the server. I really like this. Note that “hg branch” is not the same as a git branch, and see the discussion on the hg lists about renaming that before 1.0.0 for why.

Flexibility in getting things around. Plain HTTP works fine (no static-http:// hack). ssh. git daemon. rsync. Very slick.

Performance. Surprisingly, git actually feels faster than Mercurial, especially when pushing or pulling. I didn’t expect that.

Tags. They seem smarter in git. No more merging of .hgtags all the time. Also I like that I can attach a message to a tag and sign it.

All that power. There is a *lot* that Git can do. I should have been taking notes about it all.

My main complaint is still that Git doesn’t have something as nice as “darcs send”. Mercurial doesn’t either, but it’s a bit closer. Git has moved closer, but still has room to improve on that.

So I have set up git.complete.org and am starting to publish my Debian stuff on Debian’s alioth server as well.

Also, hg-fast-export in the fast-export project is *awesome*. Branch-aware and everything. It made a perfect Git version of my Mercurial work.

Categories: Programming

Tags: , Leave a comment

Comments Feed3 Comments

  1. Andres Salomon

    My SCM usage has been as follows:

    cvs -> larch -> tla / svn -> baz -> git -> cogito (git interface was simply too painful back then) -> bzr -> cogito / stgit -> git.

    I’ve finally found a revision control system that a) is fast enough to handle kernel-sized trees, b) has a reasonable interface, and c) is distributed. The multiple-branches-in-a-repo thing, git-rebase –interactive, and various other features are simply bonuses that I never thought I’d care about, but have come to rely on.

    Reply

  2. Jamie Dawn

    Git, Debien, Mercurial??!!

    I dunno a thing you are talking about.
    I am just a lowly blog buddy of Cliff’s.
    I am stopping by to say HOWDY to all those bloggers who are attending Blogstock ’08. I know some of them very well, but I don’t know you.
    You sound like you’re a guy who is using a higher percentage of his brain than I am. I am not a dolt, though. I am a wife and a mom, and I make a mean pot roast.
    Blogstock ’08 is going to be FUN!!

    Reply

    John Goerzen Reply:

    Hi Jamie! Yes, it is about time I start writing about blogstock! We’re looking forward to it. I just haven’t had a lot of time to blog lately, and sometimes when I’ve got things I want to remember myself, I put them on the blog for others to see too.

    Reply

Leave a comment

 

Feed

http://changelog.complete.org / Experimenting with Git