GIT. TRANSITION.
Pavel Grushetzky




  pavel_grushetzky   pagrus_
  pagrus             pagrus7
Case study
         Pros/cons
Inside
         High-level advice
         Trends


                Git overview
                 Commands      Outside
                       Tools
CASE STUDY
- Early 2009
                             SOA, ESB, SOAP over JMS,
- Big customer/project       WSDL 2.0, Agile 2.0, git,
                             OSGi, virtualization…
- Challenging requirements
• Multiple repos
• Topic branch model
• Interactive rebase
• Linear history
• Perfect commits
• Gatekeeper
• Poor GUI tooling (2009)
• First-timers




                            *simplified
Learning curve
Consistent workflow


 push
             Would you review?

                                   fetch
                                   checkout
            formatting, javadocs

rebase –i
fixup
push
             How about now?

                                    pull
Consistent workflow


 push
             Would you review?

                                   fetch
                                   checkout
            formatting, javadocs

rebase –i
fixup
push
             How about now?

                                    pull


                                   Conflict
Continuous integration




Distribution and branching are the opposite of integration
Continuous integration
• Build active branches        • “Promiscuous integration”
• Pull when mainline changes   • etc
Binary content




1 line change => 12kb commit
Binary content




1 line change => 12kb commit
Advice
 Org/Process


 Technical
• Get experts on the team!
• Proven workflow
• Peer review
• Mentoring
• Gatekeeping
• Short-lived branches
• Branch on feature/task
• Focused commits
• Unit Tests
Git Benefits
•   Works offline
•   Flexible
•   Reliable & Resilient
•   Fast, I mean FAST
“I merge 22k files several times a day, and I get unhappy if merge
takes >5 seconds.

And all of those 5 seconds are just the downloading of the deltas.
The merge itself takes less than half a second.”
“…it is so fast, you can’t even measure it. That’s creating a branch.”
“…if you use windows, you can
                       probably measure it”
“…it is so fast, you can’t even measure it. That’s creating a branch.”
Git Benefits
•   Efficient with text
•   Handy for local experiments
•   Works around stupid policies
•   Makes you stronger =)
Should I pick
GIT or SVN?
Should I pick
GIT or SVN?
SHOULD I LEARN GIT?
SHOULD I LEARN GIT?
Thank you!


                    Questions?
                    Comments?
Google
“Linus Torvalds git tech talk”
“Martin Fowler vcs”
And whatever problems you run into…

Git. Transition.