Implementing a development -> production workflow

There are 4 common workflows in order of increasing overhead and safety for more complex projects:

  1. Inheritance only: A development site and a production site that inherits from it (2 sites)
  2. Simple git flow: Changes on a development site get pushed to a branch in git repository. That branch then gets pulled from git into a staging site and verified there before being pulled to a production site that inherits from staging. (3 sites, 1 git branch)
  3. Merged git flow: Building on the simple git flow, but the staging site pulls from a master or release git branch that changes on one or more development branches have to get merged into. This allows for any number of independent development sites to be setup tracking different development branches or release tracks (3+ sites, 2+ branches).
  4. Versioned git flow: A stricter version of the merged git flow where a documented release with assigned semantic version numbers and release notes must be made each time code is merged into a release branch. (3+ sites, 2+ branches)