-
Notifications
You must be signed in to change notification settings - Fork 94
Git Flow
Riak CS uses the git-flow branching model with a few customizations to better suit our needs. This page documents our deviations from the standard workflow described in the original git-flow post.
The standard git-flow model makes use of three standard branch
prefixes with names that are indicative of the branch's purpose. These
are: release/
, feature/
, and hotfix/
. Note: The /
is our
chosen delimiter. Others may choose to use -
or some other delimiter.
Additionally, there are other branch prefixes we use. These are:
bugfix/
and refactor/
.
A bugfix/*
branch is different from a hotfix/*
branch in that it
fixes a bug whose level of severity does not merit the immediate
creation of a new release to be issued to customers and
users. bugfix/*
branches are hopefully much more common than
hotfix/*
branches.
A refactor/*
branch represents a change to the code that neither
fixes a bug nor represents a new feature. Instead it is a change that
represents code maintenance, cleanup, refactoring, or any other change
aimed soley at improving the clarity and maintainability of the code.
The git-flow model also prescribes that release branches should be
deleted once the release is merged and tagged on master
and the
release branch is also merged to develop
. We have instead decided to
have long-running release branches for a Major.Minor
release.
Branches for bug fixes that are eligible for inclusion in a point
release for the current Major.Minor
version should be branched from
the most recent release branch and then merged into that release
branch once accepted. This ensures that all appropriate changes are
present if the decision is made to cut another point release. The
determination of eligibility for inclusion in a point release may be
obvious or may require discussion among team members.
The most recent release branch should also be merged to the develop
branch as needed to keep develop
current with the latest bug fixes.
If a bugfix is minor and not eligible for inclusion in a point
release, the bugfix branch should be both branched off of and merged
directly into develop
.
In the case that there is a need to have more than one long-running
release branch, only changes to the most recent release branch should
be merged to develop
unless it is the case that a bug only
appears in an old release branch and is also present in the
develop
branch. This would mean the bug is not present in the most
recent release branch; therefore, this case should be exceedingly
rare.