Skip to content

EZCast release and branching strategies

Jan-David van Binsbergen edited this page Aug 8, 2017 · 4 revisions

Branching strategy

Branches

FEATURE(S)
Each new change (features, bugfixes, refactors, ...) must be commited into a new branch dedicated to the feature. These branches must start from dev branch. Once the feature is complete, it can be merged back to the dev branch.

DEV
Dev branch, new features must be merged this branch. This should be your usual working branch, with every new features in a new branch starting from here.

STAGING
Staging branch, when preparing a release, dev should be merged on staging to validate changes before merging on master.

MASTER
Production branch. Every changes here must be stable and ready to be applied on a production server.

Quickbugfixes

If you need to apply quick fixes to production (master branch):

  • Commit the fix as a new feature on the dev branch.
  • Switch back to master branch
  • Cherry-pick the fix commit to master. In some cases, you may have to resolve conflicts by hand.

Releases and versioning

EZcast use the classic semantic versioning in the format :
MAJOR.MINOR.PATCH

  • Major version is currently 1 and is not used for now.
  • Minor version introduces new features, important refactors, or config/database changes.
  • Patch version introduces small fixes or refactors only.

Each new version is followed by a release on the GitHub system, with a changelog explaining the changes. A new release should be done with every changes on the master branch.

Database versioning

Database version is stored in the database. The php code also knows which database versions it's supposed to be working with and will issue a warning upon connection on EZadmin if the versions missmatch.

Every databases changes should be stored in a script in the sql_updates folder at the root of the repository. Each patch is targeting specific database versions and will update the database structure and versions to a newer one.
(more details on the format are yet to define)