From charlesreid1

Prime Number Version System: A rather strange git branching model

This document presents a development model that has been successfully integrated into the mind machine software suite and the git repositories used to manage each.

This covers the branching strategy and the release management process.

Basic Premise

The basic premise of the prime number version system is, somewhat unsurprisingly, to tag each release of a given software package with a prime number.

This introduces a very flexible version numbering scheme that encourages several habits we view as positive:

  • Moving past the software death valley of 0.x - version numbers increase quickly, resulting in a greater project velocity
  • Flexibility - the prime number version system is open to many variations for the many needs of software projects
  • Prime numbers are awesome - a wonderful source of inspiration - find special prime numbers and use them for special tags!

We start by covering the canonical prime number version system workflow.

Putting this version numbering system into practice raises a number of questions, so questions not addressed in the canonical workflow are also addressed.

Useful variations on the prime number version system are also covered.

The Main Branch

The principal branch is the master branch, where release commits are stored.

The master branch is the most up-to-date development branch.

Development of features happens on feature branches; when the branches are ready and tested, the changes are merged into master.

(In principle, master ought to always be stable. In practice, that's not always the case.)