Git / versioning workflow

and suggested RSE work

on the TTI project

Ann Gledson, Research Software Engineer

The University of Manchester

Overview

  • Gitflow workflow
     
  • Versioning / release process
     
  • Current workflow
     
  • Proposed RSE work

Gitflow Workflow

Gitflow branch types

  • Master branch is public release code – each version on master is tagged with a semantic version number (https://semver.org/). Code in master works.
     
  • Release branch (if present) is temporary. Preparation for version release.  (Or use develop)
     
  • Commits on develop are stable and should work but some unanticipated unexpected behaviour may be present.
     
  • Feature branches are temporary*. Commits on these may be broken/unstable. 

Gitflow release process

  • Tests run on develop branch – before making a release, make sure that all tests are passing (can be run as a CI job).
     
  • (optional) Create an issue that describes what changes have been made since last release version. Make sure everyone agrees that behaviour is as expected. Link to passing tests.
     
  • Merge develop into master and tag with the version number.

Current

Workflow

  • Works well if:
    • Contributors are working in the same context, same goals
    • Communicate frequently
    • Or each individual is working on their own branch/version
  • Falls down if:
    • Code shared with external users
    • Change in context / purpose 
  • Package users expect a single, main branch
    • Extensibility logic is in the code, not branches
    • Versions: whole code, working snapshots

2. Develop parallel

version of repository

1. Keep current

workflow

  • Help with:
    • Packaging
    • Testing
    • Versioning

Upcoming RSE Work

TTI-git-workflow-RSE-work

By Ann Gledson

TTI-git-workflow-RSE-work

  • 493