Why we are using Git and GitHub for Harmony

    Written by HarmonyPSA on 2012-09-04 Last updated 2018-07-04 - 2 minute read

WARNING! Techie post!

When Harmony was originally written we were using Subversion for our source control system.
We had been using this as a company for years and we were very familiar with it. However, it was giving us a fair amount of pain, particularly around managing branching and merging. I know we weren't the only ones...

With Harmony we wanted to be able to leverage the fact that we are providing a SaaS service by providing a continuously improving experience. We wanted to be able to release a constant stream of new features and improvements to the site while keeping the high system stability people expect.  With old client/server or on-site deployed software this becomes much much harder to manage and leads to a much less 'agile' approach to growing a product.

We have been able to achieve constant feature delivery with a near-weekly release cycle which we are very happy with.

One of the challenges when taking the 'agile' continuous improvement approach is managing your code changes and being able to pull in features as and when they are thoroughly tested, while at the same time being able to maintain a live release branch containing any hot fixes which may be required.

Git gave us the ability to use the following branching strategy

  • Master branch - a stable(ish) development branch where all minor changes and fixes occur ready for future release
  • Integration branch - a branch which is used for testing the next release. This branch is merged to from master when the week's release is ready for testing
  • Live branch - once the release under test had been fully tested, this is merged into the live branch and a release is made. Any hot fixes required before the next release happens on this branch and are merged back to master.
  • Feature branches - any features which would create problematic instability in master and would stop us being able to make our weekly release are done on feature branches. These are merged into master when they are fully developed
The fact that we have three persistent branches (master, integration and live) is something we would never have been able to achieve in subversion, or at least it would have been very error prone. I am sure you have heard this before, but in Git it just works.
For those interested, we are using Git Ext which gives us a great visualization of our commits and branch histories, and an outline of our branch strategy is shown below:
Github for Harmony


About the Author: Harmony Business Systems Ltd (HBS) is the company behind HarmonyPSA, the most complete cloud PSA software on the market. Developed with functionality to cater for even the most complex needs of MSPs, VARs, ISVs and Professional Services organisations, HarmonyPSA truly is the next generation of PSA systems. HBS is an independent company based in the UK. Follow HarmonyPSA on or LinkedIn

Tags: github, Technology


Recent posts

Subscribe to our blog