On 11/29/2014 09:28 AM, Alan Mackenzie wrote:
> Speaking as a developer in a project which has just converted to git, I
> can assure you that git has tremendous disadvantages, even compared with
> cvs.

It depends; they do different things. Depending on what I'm working on,
I use either subversion or git; neither is inherently better all the time.

>
> Principally, git does not have a high level model of version control
> concepts, so that using git is somewhat analogous to programming in
> assembler.  Both give you tremendous control and the ability to do
> practically anything, including shooting yourself in the foot.  So that
> instead of conceptualising a "branch" (as you would do with Mercurial,
> Bazaar, Subversion, or even CVS), you need to think about "commits
> reachable from a certain head (excluding commits reachable from some
> other head)".

As far as I can tell, git has a very clear concept of branching. Fast
branching was one of the biggest design points in git[1], and they did
it by merely making branches pointers to avoid unnecessary copying. So
yes, a branch is "commits reachable from a certain HEAD", but
conceptually this is the same as other branching models even though it
may not be implemented the same way.

> git is very difficult to learn, compared with, say Mercurial.  To
> compare, if you do $ git help branch, you get a man page ~180 lines long
> dumped on you, and that's taking up the full width of my 240 character
> wide screen.  If you do $ hg help branch, you get a 27 line concise
> summary, max. ~80 characters wide, which nonetheless is pretty much
> complete.
>
> git has become very popular (much as systemd has), possibly because
> programmers are frustrated at not being able to write in assembler any
> more.  (At least, that's my theory).  Like systemd, it has established a
> stranglehold on its domain.  But severe disadvantages it most definitely
> has.
>

git is extremely popular, which could be a factor in its difficulty; I'm
guessing it's had a lot more development hours (and more obscure
features) put into it.

git is popular because it solved (and still solves) a problem
(distributed, parallel development) that at the time was not solved by
any other open source DVCS except Mercurial. Both projects started
around the same time, and I would imagine that having the Linux kernel
team backing git was a compelling reason to choose git over Mercurial.
Early on, iirc git was also faster since mercurial uses diffing, not
snapshots, and is written in Python.

I highly recommend Scott Chacon's "Pro Git": http://git-scm.com/book/en/v2

Alec

[1] http://git-scm.com/book/en/v2/Getting-Started-A-Short-History-of-Git

Reply via email to