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
- Commits MUST adhere to Commit standards
- Merged via Pull Request
- Deleted after merge
- Aquashing is encouraged
feature
- Naming:
feature/<name>nameshould 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
releaseand backported tomain/master
Example:
hotfix/fix-mqtt-stop-command