Your SlideShare is downloading. ×
DcATL 2013: Git-Flow for Daily Use
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

DcATL 2013: Git-Flow for Daily Use

1,037
views

Published on

Learn about Git-Flow from DrupalCamp Atlanta 2013.

Learn about Git-Flow from DrupalCamp Atlanta 2013.

Published in: Technology, Business

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,037
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
16
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Git-Flow for Daily Use @Mediacurrent @kBasarab
  • 2. Kevin Basarab Sr. Drupal Developer Mediacurrent @Mediacurrent @kBasarab
  • 3. Prereqs ● ● ● Git 101 A multiple environment setup (Dev-Stage-Prod) Comfortable on the CLI
  • 4. Benefits ● ● ● ● Parallel Development Collaboration Release Staging Support for Emergency fixes Source: http://datasift.github.com/gitflow/IntroducingGitFlow.html
  • 5. What is Git-Flow? ● ● ● 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
  • 6. > git checkout -b new_branch Switched to a new branch 'new_branch' > git branch develop ... *new_branch > git branch test_2 new_branch > git branch -a; *develop master remotes/origin/master remotes/origin/develop develop Branching 101
  • 7. Merging 101 > git checkout develop; Switched to branch 'develop' > git merge new_branch
  • 8. Terminology ● 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
  • 9. Visualize Git-Flow Source: http://nvie.com/posts/a-successful-git-branching-model/
  • 10. Visualize Git-Flow Source: http://nvie.com/posts/a-successful-git-branching-model/
  • 11. Visualize Git-Flow Source: http://nvie.com/posts/a-successful-git-branching-model/
  • 12. Visualize Git-Flow Source: http://nvie.com/posts/a-successful-git-branching-model/
  • 13. Source: http://bit.ly/10iUTKK
  • 14. Scenario ● ● ● ● ● 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
  • 15. Setup Git-Flow ● 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 master nothing to commit (working directory clean) > git-flow init Which branch should be used for bringing forth production releases? - master Branch 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? []
  • 16. Create Feature > git branch * develop master > git checkout develop > git-flow feature start 1234-78900-Add-Feature Switched 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
  • 17. Publish Feature > git-flow feature publish 1234-78900-Add-Feature Total 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/123478900-Add-Feature Already 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
  • 18. Finish Feature > 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 develop Total 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-Feature remote: bb/acl: kbasarab is allowed. accepted payload. To test.git - [deleted] feature/1234-78900-Add-Feature
  • 19. Create release > 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.0 Total 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
  • 20. Finish Release > 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.0 remote: bb/acl: kbasarab is allowed. accepted payload. To test.git - [deleted] release/2013-03-14.0
  • 21. Finish Release > 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
  • 22. Hotfix > git-flow hotfix start 2013-03-17.0 Switched 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
  • 23. Resources ● ● ● http://www.mediacurrent.com/blog/webinar-git-intro http://nvie.com/posts/a-successful-git-branching-model/ http://datasift.github.com/gitflow/IntroducingGitFlow.html
  • 24. Thank You! Questions? firstname.lastname@mediacurrent.com @Mediacurrent Mediacurrent.com slideshare.net/mediacurrent