A separate GitHub repository is created to manage each openIMIS component, e.g:
The naming of repository is based on the template: "component name"_"programming language / technology".
We use the Gitflow Workflow, which was first published in 2010 in a blog post from Vincent Driessen at nvie. We have extended this workflow to include country specific version of the component managed through the repository.
Using the Git branching features, each of these repositories will have a master branch (the latest stable version or production release) and a separate branch for each development phase.
All developments are be done in the develop branch.
Each new feature are developed in its own branch and then integrated into the develop branch.
When enough features are available, a release branch is created from the develop branch. Only bug fixes can be added from this point to the release branch, which will also be merged into the develop branch.
As soon as a release is ready, it will be merged into the master and will be tagged with a release number.
In case a bug has to be fixed quickly into the production release (master branch), a hotfix branch is created. This branch is merged directly into the master branch and into the develop branch. The master branch will then be tagged with an updated version number.
After each official release and update of the master branch, the new features/bug fixes will be integrated into the countries specific develop branches, adapted and tested against implementation's specific requirements before releasing for the country.
To easily manage git workflow, here are some tools:
Naming convention will be established for branches and commits. Every commit should have an author and a short description. The naming and format conventions will be discussed during the Developers Workshop.