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

voltagespike+plugdevel at fastmail.fm voltagespike+plugdevel at fastmail.fm
Thu Sep 18 01:42:10 MST 2008


On Sep 16, 2008, at 7:49 AM, Ted Gould wrote:

> All I'm trying to say is that a lot of people come up to me and say  
> "Git
> is better because project X uses Git."  I'm trying to say that  
> project X
> may not be using Git for the reason that they've determined that it's
> better.  There are many reasons that projects have chosen Git.  (like
> any choice in an organization of people)

Since git doesn't appear to be getting a lot of love here, I think I  
should voice my opinion. :-)

I think a lot of people shy away from git because of its very rough  
childhood. Up until about 2 years ago it was a complete mess to work  
with. Since then it has improved by leaps and bounds and now closely  
mirrors the UI experience with svn, bzr, and hg ... however, it's  
difficult to shake the reputation for being horrible once earned.

It also took a while for the GUI tools and ticket-tracking  
integrations to catch up. It was as if all the git developers were  
busy making git awesome while the other tools focused on GUIs and  
specific tool integration.

If you haven't figured it out, I use git. For everything (small  
projects, work projects, document backups). And I like it a lot.

I believe that most of the complaints I see these days relate to the  
use of git features that simply aren't available in the other DVC  
systems. While there's something to be said for simplicity, I find it  
exceedingly pleasant when the tool is working for me, not me for the  
tool.

Since it is late, I will bullet point the pros and cons for later  
discussion (and I really do hope that people respond).

Reasons to use git:

   * Far smaller repositories than any other tool

   * Far faster than the other tools

   * 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

   * 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

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

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

   * git instaweb! Single command web setup for browsing

   * git bisect: binomial search of history for find a bug fix/break

     - In all fairness, most other systems have since best-practiced
       this feature.

   * git diff --color-words

     - Amazingly wonderful when you have to work with reflowed text

   * Individual hunk commits

     - No longer do I have to take out my debug to commit!

   * In-directory branching

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

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



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

   * 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.

   * 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

   * Some of the command names work against experienced users

     - "git revert" doesn't do what you think it does!



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

-- 
                                                         Voltage Spike
       ,,,
      (. .)
--ooO-(_)-Ooo--






More information about the PLUG-devel mailing list