engineering

Ably Engineering Team: Guidance on Releases

The process defined below is the adopted approach to managing the development for the principal internal repos in the Ably organisation; ie realtime, infrastructure, and website. For other repos, this approach is also recommended, although there might be specific requirements or constraints in other repos that make a different approach more suitable.

The approach described here is pretty close to that described for One Flow.

There is a single primary long-lived branch, main.

We aim to keep history reasonably linear, as much as is practical. That is: you should rebase your working branch against the current main prior to raising a pull request. (And if the PR process takes sufficiently long that main has advanced a good deal by the time you come to merge it, you should rebase again — and let CI run again! — prior to merging it). This has several advantages. For example:

PRs may be merged with –ff-only (github: ‘rebase and merge’, github automatically rebases for you) or –no-ff (github: ‘create merge commit’, after manually rebasing) according to your judgement. Generally, if a bunch of commits are related and it would help legibility for that to be obvious from the git history, you should use a merge commit (after rebasing). If not (eg PRs that are just one commit, or which are a roundup of not-really-related fixes), fast-forward merges (‘rebase and merge’) are fine.