From 92805738bbece8b6ef629804905260e0b7e60f73 Mon Sep 17 00:00:00 2001 From: cplieger <917744+cplieger@users.noreply.github.com> Date: Sat, 10 Oct 2026 05:27:03 +0200 Subject: [PATCH] docs: describe releases for repositories with dev and main --- CONTRIBUTING.md | 37 +++++++++++++++++++------------------ README.md | 2 +- default.json | 2 +- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f4a25da..43d433b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,27 +2,30 @@ These rules cover every public cplieger repository. -## Commits and releases +## Commits -Each pull request is squash-merged with its title as the release-notes line. Write it in [Conventional Commits](https://www.conventionalcommits.org/) form, as the change users see: `fix: subtitles in mov_text tracks decode again`. +Each pull request is squash-merged under its title. Write it in [Conventional Commits](https://www.conventionalcommits.org/) form, as the change users see: `fix: subtitles in mov_text tracks decode again`. A change users notice gets a one-to-three-sentence `## Release note` in the description. Leave the `deps` and `devdeps` scopes to Renovate. -With a `cliff.toml` and default branch `main`, the commit type decides the release: +A hardening fix with no new public API is `sec:`. -| Commit | Version | Section | -| --- | --- | --- | -| `feat:` | minor | Added | -| `fix:` | patch | Fixed | -| `sec:` | patch | Security | -| `refactor:`, `perf:` or an unlisted type | patch | Changed | -| `chore(deps):` | patch | Dependencies | -| `chore:`, `chore(devdeps):`, `ci:`, `docs:`, `style:`, `test:`, `fuzz:`, `lint:`, `debug:`, `release:` | no release | | -| a releasing type with `!` or a `BREAKING CHANGE:` footer | major | | +A breaking change carries `!` in the title and ends the description with a `BREAKING CHANGE:` footer, one bullet per upgrade step. + +## Repositories whose default branch is `dev` -A hardening fix with no new public API is `sec:`. Unreleased repositories start at `v1.0.0`. Below 1.0, `feat:` raises the patch version and a breaking change the minor. +Your pull request goes to `dev`, where a releasing merge publishes a pre-release such as `v1.4.0-dev.2`. -A breaking change carries `!` in the title and ends the description with a `BREAKING CHANGE:` footer, one bullet per upgrade step. +The files a merge changes decide whether it releases. Its title becomes a line in the release-notes section its commit type picks: + +| Commit | Section | +| --- | --- | +| `sec:` | Security | +| `feat:` | Added | +| `fix:` | Fixed | +| `perf:` | Performance | +| `refactor:` or an unlisted type | Changed | +| `chore:`, `chore(deps):`, `chore(devdeps):`, `fix(deps):`, `ci:`, `docs:`, `style:`, `test:`, `fuzz:`, `lint:`, `debug:`, `release:` | no line | Changes only to these files never release: @@ -32,11 +35,9 @@ Changes only to these files never release: - any `package-lock.json` or knip configuration file - the root `.editorconfig`, `.gitattributes`, `.gitignore` and `.dockerignore` -## Repositories whose default branch is `dev` - -Your pull request goes to `dev`. `main` holds the released version and takes only promotions of `dev` and automated pull requests, which release a patch when they change shipped files. +`main` holds the released version and takes only promotions of `dev` and automated pull requests. An automated pull request that changes shipped files releases the next patch. -A [promotion](https://github.com/cplieger/ci/blob/main/docs/workflows.md#the-two-branch-release-model) releases the next minor, or from 1.0 the next major for a breaking change. +A [promotion](https://github.com/cplieger/ci/blob/main/docs/workflows.md#the-two-branch-release-model) releases the next minor, or from 1.0 the next major when it carries a breaking change. Below 1.0 a breaking change raises the minor. An unreleased repository starts at `v1.0.0`. ## Synced files diff --git a/README.md b/README.md index fd91c82..4b7feb8 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ This repository holds the default community-health files and the shared Renovate GitHub uses a file from this repository for any cplieger repository, public or private, that has no file of that type itself. A repository's own copy in `.github/`, its root or `docs/` takes precedence. A repository with its own `.github/ISSUE_TEMPLATE` folder gets none of the default forms. GitHub shows the defaults on its website only, and they are not part of a repository's clones, packages or downloads. The defaults work only while this repository is public. - `CODE_OF_CONDUCT.md` is adapted from the [Contributor Covenant 3.0](https://www.contributor-covenant.org/version/3/0/code_of_conduct/), which is licensed under CC BY-SA 4.0. -- `CONTRIBUTING.md` covers pull request titles, the commit types that decide each release and the files that never release. It also covers repositories whose default branch is `dev`, the files synced from cplieger/ci, the local checks and review. +- `CONTRIBUTING.md` covers pull request titles and, for repositories whose default branch is `dev`, which merges release, the release-notes section of each commit type, the `dev` and `main` branches and version numbers. It also covers the files synced from cplieger/ci, the local checks and review. - `SECURITY.md` explains how to report a vulnerability privately from a repository's Security tab and how to verify a release. The maintainer acknowledges a report within 7 days and releases a fix before public disclosure, normally within 90 days of the report. - `SUPPORT.md` says where to ask a question, report a bug or report a vulnerability. - `.github/ISSUE_TEMPLATE/` holds the bug report, feature request and question forms. Its `config.yml` turns off blank issues and links the security policy. diff --git a/default.json b/default.json index ef2133f..5394c16 100644 --- a/default.json +++ b/default.json @@ -155,7 +155,7 @@ "enabled": false }, { - "description": "devDependencies use scope 'devdeps' (commit prefix 'chore(devdeps)') so cliff can skip them \u2014 they don't ship to consumers and shouldn't trigger version bumps. Runtime/peer deps keep the default 'deps' scope which cliff treats as a release.", + "description": "devDependencies use scope 'devdeps' (commit prefix 'chore(devdeps)'): they never ship, so a devDependency-only change neither releases nor gets a release-notes line. Runtime and peer deps keep the default 'deps' scope.", "matchDepTypes": [ "devDependencies" ],