[PLUG-Devel] Rah, rah git! [Was: OT: sourceforge or codeplex or googlecode for OSS hosting]

Ted Gould ted at gould.cx
Thu Sep 18 08:02:14 MST 2008


On Thu, 2008-09-18 at 01:42 -0700, voltagespike+plugdevel at fastmail.fm
wrote:
> Since it is late, I will bullet point the pros and cons for later  
> discussion (and I really do hope that people respond).

I'll take the bait.

> Reasons to use git:
> 
>    * Far smaller repositories than any other tool

This was true of the original repository format bzr used.  But, the
newer formats are more efficient.  Since the repository formats are
plugable, they get upgraded (see below).

>    * Far faster than the other tools

Most of that performance has been eclipsed with recent versions of both
tools also.  Git is still faster, but I wouldn't put it in the "human
can notice" faster category.  I find with most of my Bazaar commits
today the SSH negotiation is the biggest bottleneck (I commit over SSH)

>    * git is more flexible
> 
>      - A goal of git is to support all workflows whereas you are
>        generally stuck with "the one true way" in other systems

This is true of both Bazaar and Git.  SVN and CVS are less flexible.

>    * git rebase is superior to bazaar's mainline
> 
>      - http://vcscompare.blogspot.com
> 
>        In short, bzr has svn-like merge history while git's is
>        more comprehensive

Heh, well, I would say that this is a flaw of Git and find it
interesting that you put it in the pluses category.  Basically the git
log format is date based not taking into account merges.  So basically,
depending on what you merge in, your log can be entirely unreadable.  So
there is a rebase command to move where your log is from so that it can
be readable again.  Bazaar solves this by having a readable log in the
first place :)

>    * git can track code hunk copying/moving within and between files

That is cool.

>    * git as everything built-in, I don't have to hunt for plug-ins

Again, I'm surprised this is a plus.  Bazaar has a rich plugin interface
that allows for end users to add functionality easily.  For instance
I've written two Bazaar plugins.  One that makes it so that your laptop
won't suspend while doing Bazaar operations and the other that pops up a
notification when long operations complete.  I'm quite sure that git
will never ship with DBus support, and neither would Bazaar.  But I can
add that functionality later.

>    * git instaweb! Single command web setup for browsing

Cool.  I haven't heard that anyone cried installing Loggerhead ;)

>    * git bisect: binomial search of history for find a bug fix/break
> 
>      - In all fairness, most other systems have since best-practiced
>        this feature.

Yeah, and one-upped it.  There is now a bazaar search plugin that is
really, really cool.  Plus Loggerhead support.

>    * git diff --color-words
> 
>      - Amazingly wonderful when you have to work with reflowed text

I guess I always do "bzr diff --using=meld" so that wouldn't effect me
much :)  I really like the way that meld displays my diffs.

>    * Individual hunk commits
> 
>      - No longer do I have to take out my debug to commit!

Again, I would say that this is a negative on git.  For other folks, the
way that git works is that you create your own changeset.  So if you do
"git commit" it does nothing until you go along and build up your
changeset so that it knows what to do.  While this gives you a lot of
control (his plus) it's a huge pain in the ass, and at least for me,
makes using it very slow and painful.  It doesn't matter whether you
code is faster if your "human speed" is slower. :)

>    * In-directory branching
> 
>      - Most other systems have a directory==branch concept. While git
>        also supports this concept, it isn't required.

Bazaar supports looms.  Which basically means you can do stackable
branches, commit to them and build them at will.  I believe that Bazaar
looms are more powerful, but I've not explored this much in Git so I'm
not sure.

>    * Fantastic integration with other VCS (especially svn and p4)

Bazaar also.  And someone is working on even getting Git repository
integration -- so then you never actually have to use Git's interface ;)

> Git weaknesses:
> 
>    * The codebase is larger and in C (i.e., more difficult to hack)
> 
>      - This is somewhat offset by the excellent "plumbing" support
>        allowing you to create new functionality using your favorite
>        scripting language

I'm not sure that this is a huge negative.  I like C :)

>    * The documentation is all over the place
> 
>      - There are some excellent tutorials out there for many different
>        workflows, but they aren't all included with git.

I guess I would describe this as: Git is by hacker for hackers.  End
users are something they're planning for in version 2 ;)

>    * Submodule support is, in my opinion, horrendous
> 
>      - I hear it is similar to svn:externals (and simply isn't
>        available in bzr), but it is far more complex than a simple
>        sub-directory with its own history

Honestly, I've never used a VCS where I've seen this work the way one
would expect.  I don't understand why.

>    * Some of the command names work against experienced users
> 
>      - "git revert" doesn't do what you think it does!

See "end users" comments above :)

I think I also want to add a negative for some users.  

      * Git sucks on Windows.  Basically when designing Git there are
        assumptions made about the filesystem that are true on Linux,
        but entirely wrong on Windows.  They're working on it, but last
        I checked Git was basically unusable on Windows.

      * As far as I know there is no one providing professional services
        based on Git.  Canonical does that for Bazaar.  I'm not trying
        to sell those here, but for people choosing for a business this
        could an important distinction.

      * No project hosting using Git.  While people like Freedesktop and
        the Linux kernel have their own hosting, most people don't have
        hosting.  There are instructions on getting Git to work with
        Sourceforge, but they're hacky.  Bazaar has Launchpad.

Those are just my thoughts on it.  You can also get some comments from
people that know better than I: http://bazaar-vcs.org/BzrVsGit

> That ended up being longer than expected, but it should give those
> Bazaar supporters something to chew on. :-)

Heh, and at the end of the day if people are choosing between Bazaar and
Git I'm happy.  As long as they don't choose Clearcase or Bitkeeper ;)

		--Ted

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part
Url : http://lists.PLUG.phoenix.az.us/pipermail/plug-devel/attachments/20080918/3fb9b5d8/attachment.pgp 


More information about the PLUG-devel mailing list