These examples are illustrating the usage of the supported
GitFlow
workflow in GitVersion. To enable this
workflow, the builtin template
GitFlow/v1 needs to be
referenced in the configuration as follows:
workflow: GitFlow/v1
mode: ContinuousDelivery
Where the
continuous deployment
mode for no branches, the
continuous delivery
mode for main
, support
and
develop
branches and the
manual deployment
mode for release
, feature
,
hotfix
and unknown
branches are specified.
This configuration allows you to publish CI (Continuous Integration)
builds from main
, support
and
develop
branches to an artifact repository. All other
branches are manually published. Read more about this at
version increments.
The continuous delivery mode has been used for the
main
and the support
branch in this
examples (specified as a fallback on the root configuration layer)
to illustrate how the version increments are applied. In
production context the continuous deployment mode might
be a better option when e.g. the release process is automated or
the commits are tagged by the pipeline automatically.
Feature Branches
Feature branches can be used in the GitFlow
workflow to
implement a feature in an isolated environment. Feature branches
will take the feature branch name and use that as the pre-release
label. Feature branches will be created from a develop
,
release
, main
, support
or
hotfix
branch.
Create feature branch from main
After the feature branch is merged, the version on
main
is 2.0.0-5
. This is due to
main
running in continuous delivery mode. If
main
was configured to use
continuous deployment the version would be
2.0.0
.
Create feature branch from develop
After the feature branch is merged, the version on
develop
is 1.3.0-alpha.3
. This is due to
develop
running in continuous delivery mode.
If develop
was configured to use
manual deployment the version would still be
1.3.0-alpha.1
and you would have to use pre-release
tags to increment the pre-release label alpha.1
.
Hotfix Branches
Hotfix branches are used when you need to do a
patch release in the GitFlow
workflow and are
always created from main
branch.
Create hotfix branch
Create hotfix branch with version number
Release Branches
Release branches are used for major and minor releases to stabilize
a RC (Release Candidate) or to integrate features (in parallel)
targeting different iterations. Release branches are taken from
main
(or from develop
) and will be merged
back afterwards. Finally the main
branch is tagged with
the released version.
Release branches can be used in the GitFlow
as well as
GitHubFlow
workflow. Sometimes you want to start on a
large feature which may take a while to stabilize so you want to
keep it off main. In these scenarios you can either create a long
lived feature branch (if you do not know the version number this
large feature will go into, and it's non-breaking) otherwise you can
create a release branch for the next major version. You can then
submit pull requests to the long lived feature branch or the release
branch.
Create release branch
Create release branch with version
Develop Branch
Support Branches
Support branches are not really covered in GitFlow, but are
essential if you need to maintain multiple major versions at the
same time. You could use support branches for supporting minor
releases as well. If you are just supporting the majors, then name
your branch support/<major>.x
(i.e
support/1.x
), to support minors use
support/<major>.<minor>.x
or
support/<major>.<minor>.0
. (i.e
support/1.3.x
or support/1.3.0
)
Depending on what you name your support branch, you may or may not
need a hotfix branch. Naming it support/1.x
will
automatically bump the patch, if you name it
support/1.3.0
then the version in branch name rule
will kick in and the patch will not automatically bump,
meaning you have to use hotfix branches.
To Contribute
Source
See DocumentationSamplesForGitFlow.cs
. To update,
modify then run test.