[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