Subject: Re: What's the best way to make my company migrate to Git?

From: Andrew Sayers <[email-masked]>
Date: Sat, 22 May 2010 11:52:01 +0100

Hi Daniele,

I'm a developer getting towards the end of introducing my company to 
Git.  Here are some thoughts based on the (mis)steps I took.

I found that advocating specific steps wasn't that effective - I just 
came across as being pushy and hard to work with.  It was more effective 
to politely show off what I could do with git-svn, and let people get 
jealous enough to work the "how" out for themselves.  Here are some 
examples:

I would quietly bisect a hard-to-fix bug, then say "if it's any help, 
git tells me it was introduced by so-and-so in revision N".  Sometimes 
it was no help, but sometimes it was enough to provoke the appropriate 
"aha!" for the bug.

I would nonchalantly use as many git features as I could while showing 
people my work.  So "here's the diff for my work... grr whitespace ... 
hang on I'll add `-w`... anyway, these are the REAL differences...". The 
fact it was all in glorious technicolour went without mention.

When we had a big merge that nobody was looking forward to, I said "let 
me do it!  It'll give me a chance to practice my git-fu".

When I used svn on somebody else's command-line, I'd blame the mistakes 
I made on being spoiled by Git.  So "I'll just do an `svn log`... argh 
no!  Control-C!  Control-C!  Right, `svn log | less`... my bad, git 
pipes to less automatically."

Over the course of a few months, people became convinced that Git was 
something that makes you more productive.  Our lead developer had a go 
with git-svn for a while, before our boss decided we should all make the 
switch.

I tried to make git-svn as painless as possible with some svn-like 
aliases and a cheatsheet, which I'd be happy to upload if the list could 
suggest a good place to put a PDF and some text.

The move worked for a while, but it turned out that one-and-a-half git 
experts supporting the rest of the team wasn't enough to stop people 
from making rookie mistakes like `git merge`ing into an SVN branch with 
unpushed changes.  We had to accelerate our move to git on the server, 
and I got a lot of exercise and not much work done that month as I 
dashed from desk to desk.

Things gradually calmed down as people got more comfortable with git. 
But I expect to be occasionally called over for a long time as people 
learn new tricks - "how do I, like, cherry-unpick a single commit?"

	- Andrew Sayers