Skip to main content

Branch standards and flows

Naming convention

All branches MUST follow the following naming convention:

  • Always lowercase
  • Words are separated by dash:
  • If prefix is used, it is separated by slash:

Example:

prefix/branch-name
Prefixes

Can follow the commit-standards prefixes, for more details on the prefixes, see Commit standards section.

Deployment stage branches

These branches reflect deployment stage and must always be compilable and runnable.

master/main

  • Leading edge
  • May be unstable but should not be broken (must be able to compile and run)
  • Integration branch for completed features

release-candidate

  • Preview of the next release
  • Only reviewed and approved code is merged here
  • Only person(s) owning the given repository can merge to this branch
  • Automated integration tests are run on this branch in CI/CD
  • When all tests pass the branch is merged automatically to release

release

  • Stable branch representing the latest release, ready for production and flight testing
  • All projects should have this branch
  • Packages in ppa-stable are automatically build in CI/CD from this branch
  • Tags can be created only from this branch

Development branches

These branches are temporary and exist to support development workflow.

info

feature

  • Naming: feature/<name>
    • name should briefly describe the feature / problem
  • New feature branch to be merged into master/main

Example:

feature/add-mission-status-msg

fix

  • Naming: fix/<name>
  • Used to fix an isolated issue
  • Should:
    • Solve one small, well-defined problem
  • Branch to be merged into master/main

Example:

fix/fix-post-interception-logic

hotfix

  • Naming: hotfix/<name>
  • Used to fix an issue in already released functionality
  • Should be used scarcely and only to fix a critical issue and when there is not enough time to go through the usual workflow
  • Should:
    • Solve one small, well-defined problem
    • Be merged as soon as possible
  • Typically merged into release and backported to main/master

Example:

hotfix/fix-mqtt-stop-command