Top Banner
Git-Flow for Daily Use @Mediacurrent @kBasarab
24

DcATL 2013: Git-Flow for Daily Use

May 06, 2015

Download

Technology

Mediacurrent

Learn about Git-Flow from DrupalCamp Atlanta 2013.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: DcATL 2013: Git-Flow for Daily Use

Git-Flow for Daily Use@Mediacurrent@kBasarab

Page 2: DcATL 2013: Git-Flow for Daily Use

@Mediacurrent@kBasarab

Kevin BasarabSr. Drupal DeveloperMediacurrent

Page 3: DcATL 2013: Git-Flow for Daily Use

● Git 101

● A multiple environment setup (Dev-Stage-Prod)

● Comfortable on the CLI

Prereqs

Page 4: DcATL 2013: Git-Flow for Daily Use

● Parallel Development

● Collaboration

● Release Staging

● Support for Emergency fixes

Source: http://datasift.github.com/gitflow/IntroducingGitFlow.html

Benefits

Page 5: DcATL 2013: Git-Flow for Daily Use

● At the core Git-flow is a branching and merging strategy

● GIT branches are cheap, merges are easy

● Other systems: Each branch is a complete replication of codebase

Source: http://datasift.github.com/gitflow/IntroducingGitFlow.html

What is Git-Flow?

Page 6: DcATL 2013: Git-Flow for Daily Use

> git branch -a;

Source: http://datasift.github.com/gitflow/IntroducingGitFlow.htmlde

velo

p

new

_bra

nch

*developmasterremotes/origin/masterremotes/origin/develop

> git checkout -b new_branchSwitched to a new branch 'new_branch'

> git branchdevelop...*new_branch

> git branch test_2

Branching 101

Page 7: DcATL 2013: Git-Flow for Daily Use

> git checkout develop;Switched to branch 'develop'

Source: http://datasift.github.com/gitflow/IntroducingGitFlow.html

> git merge new_branch

Merging 101

Page 8: DcATL 2013: Git-Flow for Daily Use

● Master Branch

○ The production site codebase

● Develop Branch

○ All code ready for production on a staging environment

● Feature

○ Active code development. Usually related to one ticket.

● Release

○ Integration branch to test develop merging into master

● Hotfix

○ Emergency fix to the production site

Source: http://datasift.github.com/gitflow/IntroducingGitFlow.html

Terminology

Page 9: DcATL 2013: Git-Flow for Daily Use

Source: http://nvie.com/posts/a-successful-git-branching-model/

Visualize Git-Flow

Page 10: DcATL 2013: Git-Flow for Daily Use

Source: http://nvie.com/posts/a-successful-git-branching-model/

Visualize Git-Flow

Page 11: DcATL 2013: Git-Flow for Daily Use

Source: http://nvie.com/posts/a-successful-git-branching-model/

Visualize Git-Flow

Page 12: DcATL 2013: Git-Flow for Daily Use

Source: http://nvie.com/posts/a-successful-git-branching-model/

Visualize Git-Flow

Page 13: DcATL 2013: Git-Flow for Daily Use

Source: http://bit.ly/10iUTKK

Page 14: DcATL 2013: Git-Flow for Daily Use

● Start using git-flow on a basic git repo

● Roll code based on a ticket

● Have a peer code review or help build functionality.

● Release this to production

● We had a misspelling, fix on production

Scenario

Page 15: DcATL 2013: Git-Flow for Daily Use

● Install git-flow locally.

○ https://github.com/nvie/gitflow/wiki/Mac-OS-X

○ https://github.com/nvie/gitflow/wiki/Linux

○ https://github.com/nvie/gitflow/wiki/Windows> git status# On branch masternothing to commit (working directory clean)

> git-flow initWhich branch should be used for bringing forth production releases? - masterBranch name for production releases: [master] Branch name for "next release" development: [develop]

How to name your supporting branch prefixes?Feature branches? [feature/] Release branches? [release/] Hotfix branches? [hotfix/] Support branches? [support/] Version tag prefix? []

Setup Git-Flow

Page 16: DcATL 2013: Git-Flow for Daily Use

> git checkout develop

> git branch* develop master

> git-flow feature start 1234-78900-Add-FeatureSwitched to a new branch 'feature/1234-78900-Add-Feature'

Summary of actions:- A new branch 'feature/1234-78900-Add-Feature' was created, based on 'develop'- You are now on branch 'feature/1234-78900-Add-Feature'

Now, start committing on your feature. When done, use:

git flow feature finish 1234-78900-Add-Feature

Create Feature

Page 17: DcATL 2013: Git-Flow for Daily Use

> git-flow feature publish 1234-78900-Add-FeatureTotal 0 (delta 0), reused 0 (delta 0)remote: bb/acl: kbasarab is allowed. accepted payload.To test.git * [new branch] feature/1234-78900-Add-Feature -> feature/1234-78900-Add-FeatureAlready on 'feature/1234-78900-Add-Feature'

Summary of actions:- A new remote branch 'feature/1234-78900-Add-Feature' was created- The local branch 'feature/1234-78900-Add-Feature' was configured to track the remote branch- You are now on branch 'feature/1234-78900-Add-Feature'

# Another user on another computer:> git fetch> git checkout feature/1234-78900-Add-Feature...> git fetch; git rebase origin/feature/1234-78900-Add-Feature...> git push origin feature/1234-78900-Add-Feature

Publish Feature

Page 18: DcATL 2013: Git-Flow for Daily Use

> git-flow feature finish 1234-78900-Add-Feature

Switched to branch 'develop'Already up-to-date.Deleted branch feature/1234-78900-Add-Feature (was f135b69).

Summary of actions:- The feature branch 'feature/1234-78900-Add-Feature' was merged into 'develop'- Feature branch 'feature/1234-78900-Add-Feature' has been removed- You are now on branch 'develop'

> git push origin developTotal 0 (delta 0), reused 0 (delta 0)remote: bb/acl: kbasarab is allowed. accepted payload.To test.git f22f2d0..f135b69 develop -> develop

> git push origin :feature/1234-78900-Add-Featureremote: bb/acl: kbasarab is allowed. accepted payload.To test.git - [deleted] feature/1234-78900-Add-Feature

Finish Feature

Page 19: DcATL 2013: Git-Flow for Daily Use

> git-flow release start 2013-03-14.0

Switched to a new branch 'release/2013-03-14.0'

Summary of actions:- A new branch 'release/2013-03-14.0' was created, based on 'develop'- You are now on branch 'release/2013-03-14.0'

Follow-up actions:- Bump the version number now!- Start committing last-minute fixes in preparing your release- When done, run:

git flow release finish '2013-03-14.0'

> git push origin release/2013-03-14.0Total 0 (delta 0), reused 0 (delta 0)remote: bb/acl: kbasarab is allowed. accepted payload.To test.git * [new branch] release/2013-03-14.0 -> release/2013-03-14.0

Create release

Page 20: DcATL 2013: Git-Flow for Daily Use

> git-flow release finish 2013-03-14.0

Switched to branch 'master'Merge made by the 'recursive' strategy. example.txt | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-)Deleted branch release/2013-03-14.0 (was f135b69).

Summary of actions:- Latest objects have been fetched from 'origin'- Release branch has been merged into 'master'- The release was tagged '2013-03-14.0'- Release branch has been back-merged into 'develop'- Release branch 'release/2013-03-14.0' has been deleted

> git push origin :release/2013-03-14.0remote: bb/acl: kbasarab is allowed. accepted payload.To test.git - [deleted] release/2013-03-14.0

Finish Release

Page 21: DcATL 2013: Git-Flow for Daily Use

> git push --tags

Counting objects: 2, done.Delta compression using up to 4 threads.Compressing objects: 100% (2/2), done.Writing objects: 100% (2/2), 352 bytes, done.Total 2 (delta 0), reused 0 (delta 0)remote: bb/acl: kbasarab is allowed. accepted payload.To test.git * [new tag] 2013-03-14.0 -> 2013-03-14.0

Finish Release

Page 22: DcATL 2013: Git-Flow for Daily Use

> git-flow hotfix start 2013-03-17.0Switched to a new branch 'hotfix/2013-03-17.0'

Summary of actions:- A new branch 'hotfix/2013-03-17.0' was created, based on 'master'- You are now on branch 'hotfix/2013-03-17.0'

Follow-up actions:- Bump the version number now!- Start committing your hot fixes- When done, run:

git flow hotfix finish '2013-03-17.0'

> ... Commits

> git-flow hotfix finish 2013-03-17.0

> git push origin master> git push --tags

Hotfix

Page 23: DcATL 2013: Git-Flow for Daily Use

● http://www.mediacurrent.com/blog/webinar-git-intro

● http://nvie.com/posts/a-successful-git-branching-model/

● http://datasift.github.com/gitflow/IntroducingGitFlow.html

Resources

Page 24: DcATL 2013: Git-Flow for Daily Use

Thank You!

Questions?

@Mediacurrent Mediacurrent.com

[email protected]

slideshare.net/mediacurrent