...
- One hotfix branch exists per minor release. That is,
hotfix-1.0.x
is used for (eg)1.0.1
and1.0.2
. While these will typically branch from and merge intomaster
, they may also branch from any release tag, and may not merge intomaster
ifmaster
has already moved on to a new minor (or major) release. Bothmaster
andhotfix-*
should be deployable at all times. - Release branches are not currently used. All features for release merge into
develop
, which eventually merges intomaster
to create a release tag. - Feature branches (topic branches) are optional and should be named for the corresponding JIRA issue (eg:
feature-co500
). In general, feature branches are used when merging directly intodevelop
is undesirable, perhaps because the feature is experimental. Features may also be used when a priority enhancement is made for a specific deployment, and the enhancement is required before the next scheduled minor release.- Feature branches may also be used to target develop for a future (ie: not the next) feature release. In this case, the feature branch is named for the target release (eg:
feature-3.1
) rather than a JIRA issue.
- Feature branches may also be used to target develop for a future (ie: not the next) feature release. In this case, the feature branch is named for the target release (eg:
Warning |
---|
Do not commit the same change to multiple branches. Pick the "earliest" relevant branch and commit there. For example, if you commit to hotfix-3.0.x, do not also commit to develop. Your commit will flow to develop at the next merge. This makes it easier to track where a change came from. Under limited circumstances, it may be necessary to cherry pick a commit or otherwise violate this rule. Please discuss before doing so. |
Summary
Branch | Description | Branches From | Merges To |
---|---|---|---|
master | Current release or release candidate | - | - |
develop | New features scheduled for next minor release | - | master , hotfix-* (if appropriate) |
hotfix-* | Bug fixes and minor changes scheduled for next bugfix release | master | master , develop |
feature-* | Experimental or prioritized features | master for prioritized development, otherwise any suitable branch | develop , hotfix-* (if appropriate) |
...