On Wed, Mar 7, 2012 at 6:20 AM, Diederik van Liere <dvanliere(a)gmail.com> wrote:
1) The Git / Gerrit combination means that you will
have to understand
git rebase, git commit --amend, git bisect and git cherry-pick. This
is advanced Git usage and that will make the learning curve steeper. I
think we need to spend more time on training, I have been looking for
good tutorials about Git&Gerrit in practise and I haven't been able to
find it but maybe other people have better Google Fu skills (I think
we are looking for advanced tutorials, not just cloning and pulling,
but also merging, bisect and cherrypick).
I can second that. I recently had to pick up Git (and what I guess is
the gated-trunk model) for a couple of projects, and I found it quite
hard to adapt to. The most jarring thing, coming from subversion, was
getting into the habit of considering each piece of work as entirely
independent of any other, so, instead of:
checkout code
add a feature
update - nothing new
commit
add a feature
update - merge
commit
...
You do:
checkout code
create branch (or however you will do it here)
add a feature
commit/push
checkout master again...
In other words, you don't think of adding new layers of code to a
single monolithic code base, you think of sending individual,
independent packets of code to be combined in some order.
And if you mess up the branching, it can be incredibly confusing with
Git's crappy command line interface to know how to recover. (Hint: you
can achieve a lot with cherrypick and reflog)
I had such a bad time of it, I wrote a big anti-Git rant:
http://steveko.wordpress.com/2012/02/24/10-things-i-hate-about-git/
At the very bottom is a conceptual model of Git compared to Subversion
that may actually be helpful.
Steve