Git with t for teams

Post on 08-Sep-2014

6164 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Git is not just a version control system. Git can change the way you interact with your team members. Lot’s of teams don’t think about reflecting their development workflow in Git and just use it out-of-the-box. Git, however, can be much more powerful, giving your team a boost in productivity, protecting your delivery pipeline and helping you to work better together. In this session we will start with a central workflow that is used by a lot of Subversion teams. You will learn how to practically integrate ALM solutions like continuous deployment, code reviews, change tracking and much more into your individual workflow. You will find out how to protect your master branch from accidental commits, broken builds and unreviewed code. This presentation will help you discover the best way to work together as a team – whether you’re yet to migrate to Git or even an experienced Git user.

Transcript

GITTEAMWITH T FOR

@svenpet

SVN

GIT

MERCURIAL

CVS

ANYTHING ELSETFS Perforce ClearCase VSS

NO VCS AT ALL?

you must love pain

CHEAP BRANCHINGEVERYTHING IS LOCAL

GIT IS FASTGIT IS SMALL

THE STAGING AREADISTRIBUTED

GITHUB & BITBUCKETGIT IS THE NEW STANDARD

HUGE COMMUNITY

GITWHY IS GOOD*?

* from Lemi Orhan Ergin

GITWHY IS GOOD*?

CHEAP BRANCHINGEVERYTHING IS LOCAL

GIT IS FASTGIT IS SMALL

THE STAGING AREADISTRIBUTED

GITHUB & BITBUCKETGIT IS THE NEW STANDARD

HUGE COMMUNITY

WORKFLOW CAPABILITIES

* from Lemi Orhan Ergin

MASTER RELEASEVERSION 1.9

DETAILED VIEW

BIRDS VIEW

DESIGNED FOR OPEN SOURCE

DISTRIBUTED WORKFLOW

CENTRALIZEDWORKFLOW

companies like those

@svenpet http://svenpet.com

Sven PetersATLASSIAN AMBASSADOR

RELEASECan we fix a bug for the upcoming

?

FEATUREIs the code for that

complete?

for the current version?HOTFIXCan we do a fast

BUILDCan we

the current code ?

REVIEWEDHas everybody

the code for this feature ?

I FIND YOUR LACK OF WORKFLOW STRUCTURE DISTURBING

DIFFERENTPEOPLEPRODUCTSCULTURES

DIFFERENTPEOPLEPRODUCTSCULTURES JIRA, Bitbucket, Stash

DIFFERENTPEOPLEPRODUCTSCULTURES

DIFFERENTPEOPLEPRODUCTSCULTURES

DIFFERENT WORKFLOWS

WORKFLOWBUILD YOUR

rebasemerge

fork

clone

push

pull

Git

WORKFLOWBUILD YOUR

NOT POSSIBLE WITH GITONE WORKFLOW:

block files while working on it

we know what can happen!

FORK WORKFLOWS

MAKES A COPY OF A REPOSITORY ON THE SERVER

YOU CAN NOT WRITE DIRECTLY TO THE ORIGINAL REMOTE REPOSITORY

YOU CAN STILL GET CHANGES FROM THE ORIGINAL REMOTE REPOSITORY

forking rocks!

THE GATEKEEPER WORKFLOWfor teams

REPOSITORY

it's such an awesome library

REPOSITORYFORKED

REPOSITORYFORK

REPOSITORYFORKED

REPOSITORYSYNCH

Get updates on request or automatically*

* with awesome tools like Stash or with Git hooks

REPOSITORYFORKED

REPOSITORYFORK

I've done an awesome change

REPOSITORYFORKED

REPOSITORYPUSH CHANGEX

REPOSITORYFORKED

REPOSITORY

can you pull in my changes? he is the gatekeeper

REPOSITORYFORKED

REPOSITORYPULL CHANGES

likes the changes

exactly and it works great!

LOOKS LIKE AN OPEN SOURCE PROCESS?

DISTRIBUTED TEAMS

DIFFERENT PROGRAMMING SKILLS

FLEXIBLE ROADMAPS

LEARN FROM OPEN SOURCE TEAMS?

FORKING IN THEENTERPRISE

FORKING IN THEENTERPRISE

5 REASONS FOR...

FORKING IN THEENTERPRISE

REASON 1

GREAT FOR CUSTOMIZING LIBRARIES

and still get bug fixes

FORKING IN THEENTERPRISE

REASON 2

GREAT FOR INNOVATION SPIKES

and maybe add it later

FORKING IN THEENTERPRISE

REASON 3

PROTECTING YOUR COMPONENTS

but still be open for changes

FORKING IN THEENTERPRISE

REASON 4

REDUCE THE NOISE

and keep the overview for huge projects

FORKING IN THEENTERPRISE

REASON 5

INTERACTION WITH CONTRACTORS & INTERNSprotect your sources

THE WORKFLOWDICTATORS &LIEUTENANTS

an army of developer

a few integrator

and a friendly dictator

BLESSED REPOSITORY

FORKED REPOSITORY

FORKED REPOSITORY SYNCH

BLESSED REPOSITORY

FORKED REPOSITORY

FORKED REPOSITORY Pull

BLESSED REPOSITORY

FORKED REPOSITORY

FORKED REPOSITORY PullX

too much stuff!

BLESSED REPOSITORY

FORKED REPOSITORY

FORKED REPOSITORY

FORKED REPOSITORY

FORKED REPOSITORY

Pull

Pull Pull

BLESSED REPOSITORY

FORKED REPOSITORY

FORKED REPOSITORY

FORKED REPOSITORY

FORKED REPOSITORY

Pull

Pull Pull

We are here to help!

GREAT FOR HUGE PROJECTS

THIS IS A POTENTIAL BOTTLENECK

YOU NEED MORE FREEDOM?AND WANT TO MOVE FAST?

THE CENTRALIZED WORKFLOW

HELLO SUBVERSION USERS!

THIS FLOWISYOUR

but Git makes it even better

master

ONE BRANCHTO RULE THEM ALL

all code goes in here

CENTRAL REPOSITORY

CLONED REPOSITORY

your (full) local copy for development

CENTRAL REPOSITORY

CLONED REPOSITORY

everybody integrate changes here

your (full) local copy for development

CENTRAL REPOSITORY

CLONED REPOSITORY

do that often!

SIMPLE & EASY TO LEARN

+CI = ALWAYS DEPLOYABLE

CONFLICTS GET VISIBLE EARLY

USED FOR YEARS

GREAT FOR MIGRATING

don't change too much at once

UNFINISHED

FEATURES

FEATURE TOGGLES

THE WORKFLOWFEATUREBRANCH

WE ORGANIZE WORK IN TASKS, STORIES, FEATURES

WHY NOT HAVE THAT IN CODE, TOO?

master

Feature 1

Feature 2BRANCH PER FEATURE

1 to X devs working on a branch

master

BRANCH PER FEATURE

Feature 1

Feature 2

get closed when done

CLEAN MASTER BRANCH

ISOLATED FEATURE DEVELOPMENT

GREATFOR FIXED TIME / FIXED FEATURE DEVELOPMENT

develop while bugfix

GREATFOR CONTINUOUS DELIVERY

deliver when done

master

merge frequently

FEATURE BRANCH TIPS

master

synch with MASTER frequently

FEATURE BRANCH TIPS

master

delete branch when done

FEATURE BRANCH TIPS

master

Feature 1

Feature 2BRANCH PER FEATURE

useful branch names

master

ADD USER

DELETE USER

BRANCH PER FEATURE

useful branch names

master

J-60 ADD USER

J-98 DELETE USER

BRANCH PER FEATURE

use key from issue tracker

THE WORKFLOWFEATUREBRANCH

with code reviews

LEARN

BETTER QUALITY

FEEL BETTER

BLAME

WHY DO YOU WANT TO DISCUSS YOUR CODE CHANGES?

PULLREQUESTS

+

< >

master

Pull Request

what do you think?

master

Pull Request

discuss changes GOOD!

AGREE!

master

Pull Request

approve changes

master

Pull Request

merge

THE WORKFLOW *

*SOURCE: ZACH HOLMAN "HOW GITHUB WORKS"

THE WORKFLOWFEATUREBRANCH

with history

DON'T FORGET YOUR PAST

master

HISTORYDEVELOP

new branch called DEVELOP

master

HISTORYDEVELOP

we integrate changes here

Feature

master

HISTORYDEVELOP

and tag our releases here

Feature

V. 1.1

master

HISTORYDEVELOP

makes this branch stable

Feature

V. 1.1

THE

WORKFLOW

Prod

ucti

on

STAG

ING

upcoming version

THE

WORKFLOW

never direct integration... just for hotfixes

only through Pull Request (except when not)

Prod

ucti

on

STAG

ING

without Pull Request

THE

WORKFLOW

we create a HOTFIX branch (of course) and also merge to STAGING-Branch

THE WORKFLOWRELEASE

COOL STUFFWE'RE FLOWING!

RELEASE CANDIDATES

inspect your release candidate

inspect your release candidate...and don't destroy your flow

RELEASE CANDIDATES

mast

er

RELEASE

DEVE

LOP

RELE

ASE

CAND

IDAT

E

feature complete

release team works here

other dev teams "flow" here

mast

er

RELEASE

DEVE

LOP

RELE

ASE

CAND

IDAT

E fixing back to DEVELOP

mast

er

RELEASE

DEVE

LOP

RELE

ASE

CAND

IDAT

E

merge, tag, release!

V. 1.1

POTENTIA

LLY

READY

PROMISED SET OF FEATURES

BUGS HAVE A BIG IMPACT

RELEASES ARE EXPENSIVE

AFRAID OF FAILURES

THE WORKFLOWMAINTENANCE

RELEASED SOFTWARE HAS BUGSHouston we have a problem

mast

er

MAINTENANCE

DEVE

LOP

1.1

hotf

ix branch from MASTER and fix the damn bug

mast

er

MAINTENANCE

DEVE

LOP

1.1

hotf

ix

merge with MASTER, tag and release

1.2.1

mast

er

MAINTENANCE

DEVE

LOP

1.1

hotf

ix

merge with DEVELOP and delete HOTFIX

1.2.1

mast

er

MAINTENANCE

DEVE

LOP

1.1

hotf

ixRC

- 1.2

1.1.2

ONE EXCEPTION: A RELEASE BRANCH EXISTS

THE FLOWGIT

YOU'VE JUST SEEN IT!

FLOWGITTHEDEVELOP & MASTER BRANCH

FEATURE BRANCHES

RELEASE BRANCHES

MAINTENANCE BRANCHES

from Vincent Driessen

HOW CAN I FIND MY WAY THROUGH THE

RULE JUNGLE?

USE TOOLS

HOW CAN I REMEMBER ALL THESE

GIT COMMANDS AND RULES?

there is a command line tool

git flow release start 1.6

git flow feature start 'JRA-34 Add User'

git flow feature finish 'JRA-34 Add User'

git flow hotfix finish 1.5.3

HOW CAN I REMEMBER ALL THESE

GIT COMMANDS AND RULES?

FLOWGITWHY

I thought every team is different?

FLOWGITWHY

IT CAPTURES A LOT OF DEVELOPMENT SITUATIONSIT'S WELL KNOWN: EASY ADOPTION

BUTI WON'T USE IT OUT-OF-THE-BOX: ADAPT IT!

THE FLOWSTASH TEAMat Atlassian

FLOWGITMAKINGMORE SIMPLE

getting rid of MASTER

BRANCH

KEEP YOUR

RELEASE no merge into MASTER needed

RELE

ASE

2.1

STASH TEAM FLOW

DEVE

LOP

2.1

no MASTER, we keep RELEASE

RELE

ASE

2.1

DEVE

LOP

2.1hotf

ix 2

.1.1

branch HOTFIX from RELEASE and fix the damn bug

STASH TEAM FLOW

RELE

ASE

2.1

DEVE

LOP

2.1hotf

ix 2

.1.1

merge back to RELEASE2.1

.1

STASH TEAM FLOW

RELE

ASE

2.1

DEVE

LOP

2.1hotf

ix 2

.1.1

and apply changes to DEVELOP

2.1.1

STASH TEAM FLOW

SUPPORTING OLD VERSIONS

they are still out there ...and have sometimes problems

RELE

ASE

2.1

DEVE

LOP

we need to fix a bug in 2.0

RELE

ASE

2.0

STASH TEAM FLOW

RELE

ASE

2.1

DEVE

LOP

hotf

ix 2

.0.1

you've seen this before

RELE

ASE

2.0

STASH TEAM FLOW

RELE

ASE

2.1

DEVE

LOP

hotf

ix 2

.0.1

merge with 2.1 RELEASE branch

RELE

ASE

2.0

STASH TEAM FLOW

RELE

ASE

2.1

DEVE

LOP

hotf

ix 2

.0.1

and apply changes from RELEASE 2.1 to DEVELOP

RELE

ASE

2.0

STASH TEAM FLOW

can change tomorrowSTASH TEAM FLOW

We want to helpSTASH TEAM FLOW

RELE

ASE

2.1

DEVE

LOP

2.1hotf

ix 2

.1.1 2.1

.1

I could do this

I could do this

SERVER SIDE AUTO MERGES

with Git hooks

LEAN BACK AND ENJOY PUREAWESOMENESS

RELE

ASE

2.1

DEVE

LOP

hotf

ix 2

.0.1

RELE

ASE

2.0

merge here

STASH TEAM FLOW

RELE

ASE

2.1

DEVE

LOP

hotf

ix 2

.0.1

RELE

ASE

2.0

and let the robots take over

STASH TEAM FLOW

NOT ENOUGH POSSIBILITIES?

INFINITE WORKFLOW POSSIBILITIES

CUSTOMIZE YOUR WORKFLOW WITH HOOKS

PUSH

PUSH

Script is doing some stuff

PUSH

WATCH OUT: HOOK MAGIC

at Atlassian

1 DON'T BRANCH FROM A RED BUILD

1 DON'T BRANCH FROM A RED BUILD

2 BE INFORMED

Chat

2 BE INFORMED

WORKFLOWS WITH CI SERVERSContinuous Integration

WANTWESTABLE DEVELOP BRANCH THAT IS CI TESTEDto be sure, that we won't break things

COULDWEPULL CHANGES BUILD LOCALLY MERGE IF OK

COULDWE

MERGE & PRAY

MERGEAUTOON

WHY NOT USE

BRANCHES ?FEATUREand build it from there!

DEVELOP

potential integration problem

AUTO MERGES

DEVELOP

pull frequently

AUTO MERGES

DEVELOP

pull frequently automatically on commits

AUTO MERGES

SOMETIMES WHEN MERGING

SHIT HAPPENS.

AND SOMEBODY PUSHES BUGGY CODE TO DEVELOP

DEVELOP

push automatically on green builds of DEVELOP

GREEN BUILD MERGES

POOR CI ADMINISTRATOR

setting up builds for all these tasks

AUTO DETECT BRANCHES

AUTO DETECT BRANCHES

BUILD ON EVERY COMMIT KILLED OUR CI SERVERS

x features branches * x pushes a day = server overload

BUILD ON EVERY COMMIT ON MASTER, RELEASE & DEVELOPBUILD MANUALLY ON FEATURE BRANCHES

DOING AUTO MERGES ON GREEN BUILDS OF DEVELOP

WORKFLOWS WITH ISSUETRACKING

DIFFERENT PEOPLE HAVE DIFFERENT VIEWS ON YOUR PROJECT

cool developers

incredible product owner

amazing scrum master

ISSUE TRACKERS CONNECT US CODERS WITH THE REAL WORLD

cool developers

incredible product owner

amazing scrum master

ISSUE TRACKERS CONNECTS GIT WITH THE REAL WORLD

cool developers

incredible product owner

amazing scrum master

WE LIVE IN CODE!

LET ME WORK IN CODE I JUST NEED TO KNOW WHAT

MY CODE SHOULD SOLVE!

Problem understood, I start coding

HOW DO ISSUE TRACKERS CONNECT TO THE CODE?

HOW DO ISSUE TRACKERS CONNECT TO THE CODE?

Ah good, the coders started

commit -m "fixes #6, resolve ticket #5"

HOW DO ISSUE TRACKERS CONNECT TO THE CODE?

HOW DO ISSUE TRACKERS CONNECT TO THE CODE?

commit -m "fixes #6, resolve ticket #5"

WHAT'S IN IT FOR ?

SEE WHAT'S IN DEVELOP

SEE ISSUES IN REVIEW

SEE FINISHED ISSUES ALREADY MERGED WITH DEVELOP

non geeks

WHAT'S IN IT FOR ?

DOING CODE REVIEWS IN CONTEXTBROWSING FEATURE DESCRIPTIONS SHOW CODE CHANGES

... I HAVE A DREAM

'START PROGRESS' ON AN ISSUE CREATES A FEATURE BRANCH

DOING A PULL REQUEST MARKS THE ISSUE 'IN REVIEW'

MERGING A FEATURE BRANCH MARKS THE ISSUE AS 'RESOLVED'

GIT WORKFLOW

'START PROGRESS' ON AN ISSUE CREATES A FEATURE BRANCH

DOING A PULL REQUEST MARKS THE ISSUE 'IN REVIEW'

MERGING A FEATURE BRANCH MARKS THE ISSUE AS 'RESOLVED'

ISSUE WORKFLOW

'START PROGRESS' ON AN ISSUE CREATES A FEATURE BRANCH

DOING A PULL REQUEST MARKS THE ISSUE 'IN REVIEW'

MERGING A FEATURE BRANCH MARKS THE ISSUE AS 'RESOLVED'

'START PROGRESS' ON AN ISSUE CREATES A FEATURE BRANCH

DOING A PULL REQUEST MARKS THE ISSUE 'IN REVIEW'

MERGING A FEATURE BRANCH MARKS THE ISSUE AS 'RESOLVED'

GIT COMBINED ISSUE WORKFLOW

RISE GIT TOOLSOFTHE

DON'T FLOW

LIKE IT'S 1999

svenpet.com/talks@svenpet

DON'T USE GITTOMORROW 3PM ROOM 7

THANKS

ResourcesRESOURCES

GIT WORKFLOWS https://www.atlassian.com/git/workflows

AUTO MERGES http://blogs.atlassian.com/2013/05/git-automatic-merges-with-server-side-hooks-for-the-win/

GIT RESOURCES https://www.atlassian.com/git/resources

https://blogs.atlassian.com/2013/07/git-upstreams-forks/FORKS & UPSTREAMS

PICTURES

 http://www.flickr.com/photos/80384851@N00/2653886484/ http://www.flickr.com/photos/21461615@N00/1353110751  http://www.flickr.com/photos/82402697@N00/449512594  http://www.flickr.com/photos/7228825@N05/675810372  http://www.flickr.com/photos/38451115@N04/4016842259/ http://www.flickr.com/photos/8749778@N06/5601758699/  http://www.flickr.com/photos/37831703@N00/3391877877  http://www.flickr.com/photos/60648084@N00/2900765643/  http://www.flickr.com/photos/28415633@N00/8401940159 http://www.flickr.com/photos/41304517@N00/6814372181  http://www.flickr.com/photos/99796131@N00/120468504/  http://www.flickr.com/photos/92269745@N00/4612732045/  http://www.flickr.com/photos/57768341@N00/3800568262/

http://www.flickr.com/photos/43322231@N07/4390305784/  http://www.flickr.com/photos/40011478@N00/2890078135/ http://www.flickr.com/photos/33909206@N04/7638306424  http://www.flickr.com/photos/8340753@N04/501465437/  http://www.flickr.com/photos/33774513@N08/3510825685/ http://www.flickr.com/photos/55723329@N00/3631928376/  http://www.flickr.com/photos/11389536@N03/5235804240/  http://www.flickr.com/photos/43322231@N07/5410534167  http://www.flickr.com/photos/43322231@N07/5366609719  http://www.flickr.com/photos/43322231@N07/4205372249/ http://www.flickr.com/photos/43322231@N07/4466599835/  http://www.flickr.com/photos/45940879@N04/5598027415/  http://www.flickr.com/photos/83346641@N00/3517813158/

top related