-
Notifications
You must be signed in to change notification settings - Fork 130
Branching
The Mapstraction Git repository contains two branches, each with an infinite lifetime ...
masterintegration
The master branch at origin is a standard feature of Git. origin/master is the main branch, where the source code at the head always reflects a stable or production-ready stripe of the Mapstraction code.
The important things to remember about the master branch are ...
-
Don't branch from
master; only theintegrationbranch branches frommaster -
Don't commit or merge to
master; unless you're merging back a release; see Releasing
origin/integration is the main branch where the source code at head reflects the latest changes destined for the next formal release.
When the source code in the integration branch reaches a point where a release of Mapstraction occurs, the changes in integration are merged back into master as part of the release process.
In addition to the main branches, master and integration, there are two other types of branch to assist in parallel development, prepare for releases and to help in fixing major problems or bugs. Unlike the main branches, these other branches are assumed to have a fixed lifetime and will probably be removed once they're no longer needed ...
- Feature Branches
- Release Branches
-
May branch from:
integration -
Must merge back to:
integration - Naming convention: anything except
master,integrationorrelease-*
Feature branches are used both in day-to-day development, as well as handling pull requests as part of the Mapstraction release process; see Releasing for more information on this.
When starting work on a new feature, say the implementation of support for a new mapping API, branch from the integration branch.
$ git checkout -b feature-new-maps-support integration
When work is finished on the concept or implementation of a feature, they can be merged back into the integration branch and optionally deleted.
$ git checkout integration
$ git merge --no-ff feature-new-maps-support
$ git branch -d feature-new-maps-support
$ git push origin integration
-
May branch from:
integration -
Must merge back to:
integrationandmaster - Naming convention:
release-*
See Releasing for how release-* branches are used as part of the Mapstraction release management process.
Credit is due to Vincent Driessen's A Successful Git Branching Model, who managed to actually write down and make sense of the branching model that seemed so clear in my head but made my head hurt every time I tried to write it down.