On Wed, Mar 7, 2012 at 6:20 AM, Diederik van Liere dvanliere@gmail.com wrote:
- 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