Advancement in git branching models is mostly deterministic. That’s why the term ‘flow’ often appears in branching model names. Internet Guru Flow is a CLI tool for developers designed to automate the flow for developers.
Flow moves forward (flows) on a branching model. By default, it releases the current branch into the appropriate destination. Let’s explore how Flow determines the destination and how you can influence it.
Flow recognizes three key branches: development, staging, and production. These branches ‘flow’ into each other in that order. Development into staging and staging into production. The production branch can only ‘flow’ into its hotfix. The same is true for individual ‘major’ branches (e.g.
prod‑1) that follow the production branch while matching its major version.
flowon the develop branch results into action ‘release development branch’.
flowon the staging branch results into action ‘release staging branch’.
flowon the production or major branch results into command
flow hotfix(see below).
Running Flow with a key branch argument results into similar actions. This works regardless of the current branch.
flow developresults into action ‘release development branch’.
flow stagingresults into action ‘release staging branch’.
flow prod‑1results into command
flow hotfix(see below).
Any other existing branch besides key branches is considered a feature or hotfix. Flow differentiates them by their relation to key branches. Feature branches are merged into the development branch. Similarly, hotfixes are merged to the production branch and into the corresponding ‘major’ branch.
flowon a feature branch results into action ‘release feature’.
flowon a hotfix branch results into action ‘release hotfix’.
Using the ‘hotfix’ or ‘feature’ keyword results in a hotfix or feature action regardless of the current branch. The default hotfix or feature branch is either created or merged based on its existence.
flow featureresults into action ‘create/release default feature’.
flow hotfixresults into action ‘create/release default hotfix’.
As stated above, any arbitrary branch is considered either a feature or hotfix. Therefore running Flow with an arbitrary branch name argument results in creating or releasing a feature or a hotfix of that name with the following logic.
- If the specified branch exists, it is merged accordingly (as a feature or hotfix).
- Else if on a production branch (or a ‘major’ production branch), a hotfix is created.
- Else a new feature is created.
Flow emphasizes simplicity in its usage. No arguments are needed unless you want to specify a different or new branch. For ease of use, Flow always prompts for confirmation before proceeding.
If you’re interested, feel free to download Flow from GitHub. Check out the tutorial for an easy way to get started. Your feedback is welcome as well as suggestions and contribution.