Extended GitHub workflow
A separate GitHub repository is created to manage each openIMIS component, e.g:
The generic naming convention for openIMIS modules is based on the template: openimis-<fe | be>-<module name>_<js | py>.
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 implementation specific versions of the component managed through the repository.
Using the Git branching features, each of these repositories will have a main branch (old 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. The naming convention for the feature branch is feature/<name of the feature | Jira ID>. Whenever possible, use Jira ID for the name of the feature that facilitate easy GitHub-Jira integration and generation of release notes.
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. The naming convention for the release branch is release/<release version>.
As soon as a release is ready, it will be merged into the main and will be tagged with a release number.
In case a bug has to be fixed quickly into the production release (main branch), a hotfix branch is created. This branch is merged directly into the main branch and into the develop branch. The main branch will then be tagged with an updated version number.
After each official release and update of the main 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:
SmartGit (free for open source projects)
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.
In addition with the generic version of openIMIS, one can have a country/implementation specific branches that are similar to the generic version. The naming convention for these branches is implementation/<name of implementation>/<name of branch | develop | main >