Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 19 additions & 18 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:

Expand All @@ -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

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
2 changes: 1 addition & 1 deletion default.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
],
Expand Down
Loading