|This is Draft post, WIP, I’m still writing it, EAT next sprint ahahha|
I had an interesting meeting with a US customer the other day… they’ve just transitioned all teams to a new gitflow workflow and they had some tough questions for me about that.
However, the most interesting part was that many of my answers to their questions weren’t related to git, gitflow or dev process, instead, they were all about how they apply Agile/DevOps principles and practices.
Gitflow Workflow is a Git workflow design that was first published and made popular by Vincent Driessen at nvie. The Gitflow Workflow defines a strict branching model designed around the project release. This provides a robust framework for managing larger projects.
Gitflow is ideally suited for projects that have a scheduled release cycle. This workflow doesn’t add any new concepts or commands beyond what’s required for the Feature Branch Workflow. Instead, it assigns very specific roles to different branches and defines how and when they should interact. In addition to
featurebranches, it uses individual branches for preparing, maintaining, and recording releases. Of course, you also get to leverage all the benefits of the Feature Branch Workflow: pull requests, isolated experiments, and more efficient collaboration.
In addition to the abstract Gitflow Workflow idea, there is a more tangible git-flow toolset available which integrates with Git to provide specialized Gitflow Git command line tool extensions.
Gitflow is really just an abstract idea of a Git workflow. This means it dictates what kind of branches to set up and how to merge them together. We will touch on the purposes of the branches below. The git-flow toolset is an actual command line tool that has an installation process. The installation process for git-flow is straightforward. Packages for git-flow are available on multiple operating systems. On OSX systems, you can execute
brew install git-flow. On windows, you will need to download and install git-flow. After installing git-flow you can use it in your project by executing
git flow init. Git-flow is a wrapper around Git. The
git flow init command is an extension of the default
git init command and doesn’t change anything in your repository other than creating branches for you.