Skip to content

DadoFlow Introduction

Paul Mansour edited this page May 29, 2020 · 1 revision

DadoFlow is a radically simplified Git branching model and workflow designed for APL programmers. It is based on OneFlow by Adam Ruka ( https://www.endoflineblog.com/oneflow-a-git-branching-model-and-workflow ).

DadoFlow is designed for projects where each production release is based on the previous production release. Older versions versions may be maintained as well, but patches to old versions should be an exception and not the rule. Patches to the current version are incorporated into current development, but patches to older versions are not. Thus, while it is possible to maintain old versions, and to patch them as many times as necessary, it is not encouraged.

DadoFlow has a small set of functions that thinly sit on top of Git to support the workflow.

Branches

DadoFlow has one permanent, public branch named the master and two types of temporary, private branches: feature, and release.

Master Branch

The master branch is the only permanent, public, eternal branch. All other branches are temporary, local, and are merged to the master when appropriate and then deleted. In general, no work is ever done directly on the master branch. The master branch is always deployable. We can cut a release at any time, after any feature branch is merged into the master. A release is an easy, one-click operation.

Feature Branches

Feature branches are where almost all work gets done, including new features, minor enhancements, bug fixes, cleanup and refactoring. Feature branches are private and short-lived.

Release Branches

Release branches are extremely short lived. For new releases, no manual work is performed on a release branch. The only purposes of a release branch is to have a tagged commit on the master that records the new version number. DadoFlow handles this all automatically.

From time to time, however, we may need to patch an old version. In this case, a release branch is created manually, the bug is fixed, tests run, and then it is merged back to the master. This is the only time that manual work is done on a release branch.