Commit Message Conventions
Prefix tags for release notes, issue linking, and goreleaser integration
ClusterCockpit uses GitHub Flow: main is always deployable, all work
happens on short-lived feature branches, and every change lands via a pull
request. History is kept linear by rebasing — no merge commits from feature
branches.
| Branch | Purpose |
|---|---|
main | Active development; source for the next release |
release/v1.x | Persistent; created per minor release, receives backported fixes |
External contributors fork the repository and add the upstream as a second
remote. Core team members clone upstream directly and replace upstream
with origin in the commands below.
git config --global pull.rebase true
<type>/<issue-number>-<short-description>
| Prefix | Use for |
|---|---|
feat/ | New features |
fix/ | Bug fixes |
doc/ | Documentation |
Examples: feat/123-auto-job-tagging, fix/backport-423-wal-rotation-v1.3
Persistent release branches: release/v1.x (minor version only).
Sync main before starting:
git pull
Branch off main:
git checkout -b feat/123-my-feature main
Commit freely — informal messages are fine during development; they will be cleaned up before the PR. Reference issue numbers where relevant.
Push, and use optionally --force-with-lease (never --force) after any
rebase:
git push -u origin feat/123-my-feature
git push --force-with-lease origin feat/123-my-feature # after rebase
Rebase onto main whenever the base branch has moved to ensure feature
branch is compatible with latest upstream main:
git fetch origin && git rebase origin/main
Clean up the branch history so each commit is a logical unit with a proper prefix message before requesting review:
git rebase -i upstream/main
Squash WIP commits with squash / fixup, polish messages with reword.
See Commit Message Conventions for the
required prefixes. Push with --force-with-lease afterwards.
main, no merge commits in the branchTarget main for new work; target release/v1.x for backports.
feat: …, fix: …)Fixes #423)make testPrefix tags for release notes, issue linking, and goreleaser integration
Go test conventions and how to run the test suite locally
How to set up cc-backend for fast frontend development iteration
How to set up a local Hugo environment and contribute to the documentation website
How to cut new releases and backport fixes using persistent release branches and goreleaser.
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.