about:me
Marcos Placona

Decentralized

Branching Strategy

Decentralization is the process of redistributing or dispersing functions, powers, people or things away from a central location

http://en.wikipedia.org/wiki/Decentralization

The plan

Instead of only having a master branch, we introduce a "develop" branch. this becomes the main branch AKA "the integration branch".

 

Any automatic nightly builds are built from this.

Supporting Branches

  • Feature
  • Release
  • HotFix
marcosp @ ~/Projects/www/www.hostelbookers.com
$ git checkout -b jira-1234 develop
$ git add <some-file> 
$ git commit
marcosp @ ~/Projects/www/www.hostelbookers.com
$ # many more commits
$ git pull origin develop
$ git checkout develop
$ git merge some-feature
$ git push
$ git branch -d some-feature

Nitty gritty

$ git flow feature start homepage

From the top - Feature

John & Mary start working on new Feature branches

maryb @ ~/Projects/www/www.hostelbookers.com
$ git flow feature start jira-1234

From the top - Finishing

A few git commit later, Mary is ready to finish her feature

maryb @ ~/Projects/www/www.hostelbookers.com
$ git flow feature finish jira-1234

From the top - Releasing

Once Mary's peer code review has completed, she begins a Release

maryb @ ~/Projects/www/www.hostelbookers.com
$ git flow release start v0.0.34

More on semantic versioning: http://semver.org/

From the top - Finishing

Mary has commited any last-minute bugs and bumped up the system's version. She will now finish the Release

maryb @ ~/Projects/www/www.hostelbookers.com
$ ./bump-version.sh 0.0.34
$ git flow release finish v0.0.34

From the top - Problem

QA has found an issue in Mary's release. It requires a hotfix

From the top - Problem

Mary starts a hotfix branch off master to address the reported issue.

maryb @ ~/Projects/www/www.hostelbookers.com
$ git flow hotfix start myfix

From the top - Problem

With this issue now fixed, Mary is ready to merge it back.

maryb @ ~/Projects/www/www.hostelbookers.com
$ git flow hotfix finish v.0.0.35 

Commands

What have we done?

  • Enabled one or more developers to work on a feature
     
  • Allowed them to independently ship that feature
     
  • Allowed for hotfixes to exist at any time
     
  • Versioned our application to allow for continuous release

Where to go from here?

Image Credits:

https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow

http://danielkummer.github.io/git-flow-cheatsheet/

Questions?

Made with Slides.com