Skip to content

Git commit workflow

olf edited this page Sep 11, 2023 · 33 revisions

Git commit workflow for Storeman

This is the commit workflow @mentaljam originally designed and which is still used for the OpenRepos client app harbour-storeman.


Pull requests                                       Release branch specific PRs
         │                                                                    │
         ▼                                                                    │

     devel───►master─┬─►sfos3.3       │

                                                ├─►sfos4.2◄─┤

                                                └─►sfos3.1◄─┘


All "horizontal" pull requests (i.e., from devel to master and from master to the release branches) must be regular merge commits. Do not perform "squash merge"-commits "horizontally". Hence stubbornly always perform merge commits "horizontally".
Release branch specific commits (i.e., pull requests which are directed at a git branch out of {sfos3.1,sfos3.3,sfos4.2}), should be "squash merge"-commits; regular merge commits may be deliberately used in select cases for these branches.

Note that above diagram also tries to depict that the sfos3.3 branch should not contain branch-specific commits (except for the uncommented dependencies on SailfishOS release versions) compared to master or devel (i.e., these are just temporally staged), in contrast to the sfos3.1- and sfos4.2-branches, which do differ by code and configuration specifically for the SailfishOS releases they support. For details see the Wiki page "Differences between git branches".

Also note that the basic idea is to accumulate pull requests (PRs) merged into the devel branch, move them in tranches (i.e., from time to time) into the master branch (which is subjected to different CI builds for quality assurance, see below). When preparing for a release, PRs are posed from the master branch to the release branches, so the CI for these PRs runs the actual code which would be released when these PRs are merged.

The CI and release building is described at its own Wiki page.


The few differences compared to @mentaljam's original scheme are:

  • The dev branch was renamed to devel.
  • The devel (ex-dev) branch is auto-build at GitHub for a tighter integration and quicker feedback, because the build results are directly displayed and build-logs accessible in pull requests.
  • The master branch instead of the devel (ex-dev) branch is build-checked as harbour-storeman-testing at the SailfishOS-OBS.
  • [September 2023] Rename branch sfos3.2 to sfos3.1 in order to reflect reality and avoid confusion (PR #454).

Reference: See issue #163.

Clone this wiki locally