[bt-devel] Misgivings about git (and Gitorious)
Raoul Snyman
raoul.snyman at saturnlaboratories.co.za
Thu Aug 19 10:21:32 MST 2010
Hi folks,
I've voiced this a bit in the channel, but I thought I might bring it up for
discussion here, as I know I'm not the only one who is not convinced of our
move to git, and there may be more.
Let me prefix this by saying that I am coming from (and comparing to) bzr and
Launchpad. Those are the tools I currently know best. I have also used
Subversion and CVS.
Gitorious looks great. Nice design, lots of projects use it, including some
major ones like Qt. However, there are a couple of small things that are
"missing" when I compare it with Launchpad.
For instance, if I want to join a team, I need to somehow contact one of the
team's administrators, and ask them to add me. In Launchpad, I can simply
click on a link that says, "join this team". Perhaps it's just a setting, but
it would really lower the barrier to other developers joining our team.
Another thing I found was that Gitorious does not seem to have any
documentation. I was wanting to find out how the merge request system works,
but I couldn't find anything apart from a blog post announcing it's arrival,
and a few blog posts complaining about it's limited capabilities (though, to
be honest, I think Launchpad has those same limitations).
So far I've found git to be overly complicated for doing simple tasks, and
inflexible to allowing me to use my normal workflow.
For instance, to simply develop in another branch, I have to do the following:
$ git branch feature1
$ git checkout feature1
If I then want to use another branch, or master, then I have to check it out
before I can use it:
$ git checkout feature2
In bzr, for comparison, I can just branch it, and then use it. If I want to
use another branch, no commands are necessary, I just do my development.
$ bzr branch trunk feature1
Another procedure I perform quite often is branching someone else's branch
into my shared repository. In git, I need to do the following:
$ git remote add other http://url.to/git/repository
$ git remote update
$ git branch feature3
$ git checkout feature3
As opposed to bzr:
$ bzr branch http://url.to/feature3
In addition to this seemingly long-winded way of doing things, git doesn't
have the concept of "each directory in it's own branch", which messes with my
way of developing. I typically like to have multiple branches checked out at
the same time, and work on a little here and a little there at the same time.
In bzr, I can simply open my IDE, reopen my project, and I'm good to go. In
git, I have to first checkout the branch I want to work on, open my IDE,
recreate a project (because projects are not stored in version control), and
then I can start working on it.
I'm afraid I can't say I am very happy with git, it seems to make simple tasks
complicated, and is not nearly as flexible as everyone says it is. Gitorious
seems to be a good system, but lacks a few features I would expect of a system
of it's calibre.
--
Raoul Snyman, B.Tech IT (Software Engineering)
Saturn Laboratories
m: 082 550 3754
e: raoul.snyman at saturnlaboratories.co.za
w: www.saturnlaboratories.co.za
b: blog.saturnlaboratories.co.za
More information about the bt-devel
mailing list