Git Ready! Workflows

Post on 17-May-2015

8.010 views 0 download

Tags:

description

How do you choose a git workflow that increases productivity and reduces the friction of your team? What are the battle tested practices of successful teams that moved to git? How is git used inside Atlassian? As you might have heard git has many compelling features and has gained incredible momentum in the industry at large. Yet understanding how an enterprise team can adopt it can be daunting. The presentation aims to help answer these questions and more: - Available collaboration models when using a distributed version control system like git - Branching models that foster and enhance parallel development - Emerging code best practices and choices that can be safely adopted when migrating to git - How Continuous Integration changes when your team embraces git

Transcript of Git Ready! Workflows

Ready! Workflows

Question timeat the end

Submit your questions

Nicola PaolucciDeveloper Advocate / Git Evangelist

@durdndurdn.comI come out nice in pictures, I know :-).

Cheap local branchingFull local history

Speed

Staging area

prominent in Open Source

Huge community

You heard has

Feature based workflow

10x the speed of svn

Distributedcryptographic integrity

ground breaking paradigm is ground breaking

Workflow building blocks

1

Common Practices

2

3

Collaboration model

We’ll cover how to choose:

Branching model

Continuous Integration4

Which collaboration model?1

Easy, right?

Fully decentralized Anarchy

I do my thingI do my thing, too

ANARCHYhere’s mine, who tells

john?look ma, a goat!

Blessed repository with Gatekeeper

He is cool

Gatekeeper

To have your work accepted, talk to him

and LieutenantsDictator

long live the King!

Lieutenants guardthe King

Blessed repository

Shared common repository

we share “everything”

luckily no goats here

Centralised

atlassian.com/gitMore on Collaboration models

+ = Centralized

Enterprise

Centralized allows fine grained ACLs

Branch & Repo permissions

Integration with your

Issue tracking and CI

Which branching model?2

Product Releases1

Continuous Delivery2

Two common Branching Models

for Product Releases2.1

One Central Repository1

One Branch per Feature

One Branch per Bugfix

2

3

Tim

emasterfeature

branches

PRJ-

123-

desc

ript

ion

One Central Repository1

One Branch per Feature

One Branch per Bugfix

2

3

Tim

emasterbugfix

branch

PRJ-

123-

bug-

desc

ript

ion

Stable Branches4

master is alpha / RC5

Pull Requests6Before merges

Long running

Tim

emasterstable

branch

PRJ-

345-

bug-

desc

ript

ion

bugfix

2.2

2.2 for Continuous Delivery

master is in production1

staging is the next version

new features off staging

2

3

with branch names like: username/ISSUE-KEY-summary

promoted from staging, can receive hot-fixes

Common Practices3

turbo boost!

What is a Pull Request?

Hey I have some code I want to merge here,

take a look?

Low friction collaboration

Pull Request

I have some code here!

Can I merge it here?

Single Repositoryvs

Remote Forks

Complete visibility1

No per Dev remotes required

KISS

2

3

Pros of a Single RepoAll feature branches available

Forks Are Great too BTW

Every one has their remote repository

With Forks

Full remote copy,each has one Integrator, Gatekeeper,

Tech Lead, etc.

Manage codebase maturity1

X department and 3rd parties

Dev to Dev interactions

2

3

Read “Cross”

Continuous Integration4

What happens to CI with git?1

An explosion of branches2

3 Performance degradation of build sys

Building everything is expensive1

Automatically build stable and master2

3 Manually trigger feature branch builds

Less Friction and Automation5

Code Quality via pre-commit hooks

Branch from green builds

Automatic merges for the win!

Tim

e

masterstable branch

PRJ-

345-

bug-

desc

ript

ion

bugfix

2.2

stable branch

2.1

Automatic MERGES!

Ripple merges1

Server side update hook2

3 Or tool support

Read more at:bitly.com/automatic-merges

In Conclusion: the recipe

BranchingModel

Adopt GitPractices

Automation & CI setup

Conclusions

Product workflow

Continuous delivery workflow

Embrace PR

Build automatically,

but leave knobs!Single Repo

or Forks

CollaborationModel

Centralized

Hooks, hooks everywhere

Nicola PaolucciTHANKS YOU FOR YOUR ATTENTION

@durdndurdn.comShould I change the pic?

Git Repository Management for Enterprise Teams

Free Git Code Hosting for Small Teams

Free Git Desktop client for Mac or Windows

Atlassian