go agile with git (part 1 of 3) workflows, branching & merging · pdf filego agile with...

27
1 Copyright ©2012 CollabNet, Inc. All Rights Reserved. ENTERPRISE CLOUD DEVELOPMENT Go Agile with Git (Part 1 of 3) Workflows, Branching & Merging Luca Milanesio [email protected] January 2013

Upload: nguyenlien

Post on 14-Feb-2018

253 views

Category:

Documents


2 download

TRANSCRIPT

1 Copyright ©2012 CollabNet, Inc. All Rights Reserved. ENTERPRISE CLOUD DEVELOPMENT

Go Agile with Git (Part 1 of 3) Workflows, Branching & Merging

Luca Milanesio

[email protected] January 2013

2 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

Luca Milanesio

Luca Milanesio is Director and cofounder of GerritForge LLP, the leader Git and Gerrit competence center

for the Enterprise and key technology partner of CollabNet Inc. His background includes 20 years of

experience in development management, software configuration management and software development

lifecycle in large Enterprises worldwide. Just prior to GerritForge LLP, Luca was Technical Director and Senior

Product of the Security and Compliance platform for Electronic Payments at Primeur in Italy and UK. Since

starting GerritForge LLP, Luca contributed to the Gerrit community and allowed the introduction of

Enterprise code-review workflow in large Enterprises worldwide. Thanks to GerritForge LLP and CollabNet

Inc. TeamForge is now the most advanced ALM platform with integrated Git support and Code-Review for

the Enterprise.

About the Speaker

About CollabNet

• Industry leader in Enterprise Cloud Development (ECD)

• Agile ALM, DevOps, SCM, Git & SVN – Product & Services

• Download TeamForge for FREE @ www.collab.net/git

3 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

Agenda

• Introduction and Git concepts

• Gerrit explained

• Gerrit and Jenkins integration

• Q&A

4 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

Introduction and Concepts

• Git

– Most popular emerging distributed SCM

• Jenkins

– Most popular open source Continuous Integration

• Gerrit Code Review

– Widely used code-review based on Git

• CollabNet® TeamForge®

– Provides an unparalleled smooth integration of all these tools into your software development process

5 Copyright ©2012 CollabNet, Inc. All Rights Reserved. 5 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

Understanding Git “Git is a distributed revision control and source code management (SCM) system with an emphasis on speed. Git was initially designed and developed by Linus Torvalds for Linux kernel development; it has since been adopted by many other projects. […] Git is free software distributed under the terms of the GNU General Public License version 2.”

source: Wikipedia

6 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

• Open source distributed SCM, used notably by:

– Linux (it was originally developed for that very purpose)

– Eclipse foundation

– Android (based on Gerrit Code Review)

• Why Git?

– All operations are local

• search, log, history, branching and merging

• offline development is possible

– Powerful merging strategies (merge, rebase, cherry-pick)

• CollabNet® TeamForge® provides a seamless and secure Git support out-of-the-box

What is Git Today?

7 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

Commit Graph and UUIDs

commit

fd002

commit

bd986

commit

e10ca

snapshot

master

snapshot snapshot

• Commits are identified with a SHA-1 UUID

– Repository history is a graph of linked commits

– Commit points to a "object tree" of content

– Branch or Tag = label of a point in the history

8 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

Merging Code – Recursive Merge

C3 C1

master

C4 C5

C6 C7

work

• Join history of two development streams

– Similar to SVN merge

– Merge is tracked as commit in the repository

master

work

C8

9 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

Merging Code – Cherry-pick

• Apply individual commits on another branch

– Choose individual changes and apply anywhere

– Keep original history of changes

C3 C1

master

C4 C5

C6 C7 work

master

C6’ C7’

10 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

Merging Code – Rebase

• Apply changes on another history branch

– Branches flattened up

– History on rebased branch is rewritten

C3 C1

master

C4 C5

C6 C7

work

C6’ C7’

master

work

11 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

• Git code-merging strategies summary – Recursive merge

– Branch rebase

– Cherry-pick

• Other code merging strategies – Criss-cross, octopus, ours, subtree merge

– Squashing commits and interactive rebase

– Learn more at: http://www.slideshare.net/lucamilanesio/git-workshop-33degree-2011-krakow

• Enterprise grade Git with CollabNet TeamForge® – TeamForge history protection webinar

http://visit.collab.net/2012Q4WebinarFirstintheIndustryCollabNetprovidesHistoryProtectionforGit_WebinarRegistration.html

– Git for the Enterprise webinar http://visit.collab.net/webinar-git-enterprise.html

More about Branching and History Protection

12 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

1. Git

2. Subversion

3. Perforce

4. ClearCase

5. Two or more from the above list

Poll: what SCM is mainly used in your Enterprise ?

13 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

• Git is the key enabler for Team Agility

– Everything is local

– Commit early, commit often

– Work beautifully with Continuous Integration (Jenkins)

• Enablement of branching and remote repository

– Local development branches

– Allows different history on remote sites

– Push / pull synchronization across repositories

• Merging strategies

– Designed for merging code consistently

– Embedded merge-tracking

– Rebase and cherry-pick code across branches

Summary

14 Copyright ©2012 CollabNet, Inc. All Rights Reserved. 14 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

Gerrit Code Review “Gerrit is a free, web-based team software code review tool that integrates with Git version control software. It has been developed at Google […] for the development of the Android project. As it is web based, software developers in a team can review each other's modifications on their source code using a web browser and approve or reject those changes.”

source: Wikipedia

15 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

• 100% pure Java SSH and HTTP Git backend

– Scalable and suitable for large Enterprises

• Web-based and Command Line administration

– Users and Groups

– Project and branch security

• Collaboration and Code-review

– B2B integration at code-level

– Communicate and share code knowledge in the Team

– Enforce workflow and code quality

• The most successful open source code review

– Android OS

– Eclipse, OpenStack, CouchDB and many others

What is Gerrit Today?

16 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

1. Not at all

2. Heard of it but never used

3. Tried at least once

4. We are experimenting internally

5. We use it on a daily basis

Poll: Are You Familiar with Gerrit Code Review ?

17 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

Who's Using Gerrit in Production Today ?

source: Wikipedia

18 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

• Early bug discovery – Four eyes catch the bug

– More time reading code and less new bugs

• Collective code ownership – Entire team is responsible for a change

– Trigger discussion on code and architecture

• Enforce code and quality standards – Avoid broken builds by enforcing quality first

– Automatically check your company coding standards

• Build a trust model on teams – Delegate the approval process

– Allow "elected roles promotion" and make people feeling engaged

Goals of Gerrit Code Review

19 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

• Project

– Git repository created and managed by Gerrit

– Group members and ACLs

– Track changes (all, including un-merged) and reviews

– Can merge code into the project branches

Gerrit: Concepts

• ALM Project entry point – Aggregates Code Review projects

together

– Define members and roles

– Allows bi-directional tracking on your artifacts

– Define templates of review workflows

20 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

•Contributor

– Propose changes and new ideas

•Reviewer

– Discuss and vote: -1 (things to improve) to +1 (looks good)

•Committer

– Permanent member of the project

– Validate changes, from -1 (doesn't work) to +1 (works)

– Can veto (-2) or approve (+2) a change

– Can merge code into the project branches

Gerrit: Project Roles

21 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

• Change

• Patch Set

• Review

Code Review Glossary

Commit submitted for review

Set of changes made on a change

Scoring of a change based on a patch set

-2: veto, do not merge -1: it's OK, more patches needed 0: just comments, no score +1: it's OK, but I need somebody else to look at it +2: it's perfect, please merge

Verification if a change works or not

Submit change through the GUI

Accept a change and push it through Git

Do not merge the change and park it indefinitely

• Verified

• Submit change

• Merge change

• Abandon change

22 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

• Gerrit workflow overview

• Working with TeamForge and Gerrit

• Adding team members to a project

• Hands-on and Gerrit live on TeamForge 6.2

Coming in the Next Session

23 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

• TeamForge + Gerrit is a powerful foundation for Enterprise Git

• Git provides the ability to improve speed and agility over distributed Teams

• Git is able to combine changes from different repos and branches thanks advanced merge strategies and commands

• TeamForge provides history protection on top of to ensures that potentially unnoticed events, such as remote branch deletions and forced pushes, are now detected and fully recoverable.

• Gerrit and TeamForge organise Git repository and Code Review lifecycle artifacts into a single project space

Summary

25 Copyright ©2012 CollabNet, Inc. All Rights Reserved. 25 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

Questions?

Luca Milanesio

[email protected] www.collab.net +1-650-228-2500 +1-888-778-9793 blogs.collab.net twitter.com/collabnet www.facebook.com/collabnet www.linkedin.com/company/collabnet-inc

26 Copyright ©2012 CollabNet, Inc. All Rights Reserved. 26 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

About CollabNet

CollabNet is a leading provider of Enterprise Cloud Development and Agile ALM products and services for software-driven organizations. With more than 10,000 global customers, the company provides a suite of platforms and services to address three major trends disrupting the software industry: Agile, DevOps and hybrid cloud development. Its CloudForge™ development-Platform-as-a-Service (dPaaS) enables cloud development through a flexible platform that is team friendly, enterprise ready and integrated to support leading third party tools. The CollabNet TeamForge® ALM, ScrumWorks® Pro project management and SubversionEdge source code management platforms can be deployed separately or together, in the cloud or on-premise. CollabNet complements its technical offerings with industry leading consulting and training services for Agile and cloud development transformations. Many CollabNet customers improve productivity by as much as 70 percent, while reducing costs by 80 percent.

For more information, please visit www.collab.net.

27 Copyright ©2012 CollabNet, Inc. All Rights Reserved. 27 Copyright ©2012 CollabNet, Inc. All Rights Reserved.

© 2012 CollabNet, Inc., All rights reserved. CollabNet is a trademark or registered trademark of CollabNet Inc., in the US and other countries. All other trademarks, brand names, or product names belong to their respective holders.

CollabNet, Inc. 8000 Marina Blvd., Suite 600 Brisbane, CA 94005 www.collab.net +1-650-228-2500 +1-888-778-9793 blogs.collab.net twitter.com/collabnet www.facebook.com/collabnet www.linkedin.com/company/collabnet-inc