Branching - iToto/developmentCycle GitHub Wiki

Our goal with having many different ‘official’ branches is to separate different kinds of code changes from each other. This allows us to generate builds of our software with specific visions in mind. Branching also allows developers to organize their work in order to avoid mixing different issues’ code together.

Master Branch:

  • Used as the production branch.
  • All products should be running on this branch.
  • It is always the most stable branch.
  • Merges into this branch MUST be done through a Pull Request and reviewed.

Develop Branch:

  • Used for BETA testing of new features that are ready to go live
  • This branch should always be the one merged into master
  • Merges into this branch MUST be done through Pull Request and reviewed.

Feature Branch:

  • Branched off the develop branch on Upstream
  • Used for creating a new feature
  • Branch lives as long as the feature is being developed and/or tested
  • Deleted once Feature is merged into develop branch

Bug Branch:

  • Branched off the master branch on Upstream
  • Used for fixing bugs in the release
  • Branch lives as long as the bug is being developed and/or tested
  • Deleted once Bug is merged into master and develop *branches

HotFix Branch:

  • Branched off the relevant release tag on Upstream.
  • Used for fixing a critical bug.
  • Once complete is given a new release tag with a minor release # increment.
  • Merged into master AND develop simultaneously.
  • Merged to all dependent releases of the release we originally branch off of. These new merge commits are tagged with new release numbers. These new tags must be tested.

Global View

All together the branching model looks something like this.

⚠️ **GitHub.com Fallback** ⚠️