You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: document --rev and the skip notice, and date v2.14.0 (#15)
Documentation for the engine changes merged in
commit-check/commit-check#544, ahead of the v2.15.0 release, plus the
release date for v2.14.0.
## Command-line recipes
([example.md](https://github.com/commit-check/commit-check.com/blob/docs/rev-and-skip-notice/docs/example.md))
- **A "From a revision" tab** under message checking: `--rev` takes
anything `git rev-parse` understands, errors up front on a revision that
does not resolve, and refuses to be combined with a message file or
stdin.
- **The author-check section now says whose identity is judged**:
without `--rev` it is the local git config (right for a hook, wrong for
CI); with `--rev` it is that commit's recorded author, and the config is
never consulted.
- **The range-checking recipe drops the stdin pipe** for `--rev`, which
also lets it include the author checks meaningfully, and shows `git
rev-list HEAD^1..HEAD^2` for covering exactly a PR's commits.
- **A new "When a check is skipped" section**: which rules decline merge
subjects and why only git's literal `Merge `/`fixup! ` prefixes qualify,
the one-line stderr notice, the JSON `"status": "skip"`, and a warning
box about the synthetic-merge-commit trap on `pull_request` checkouts.
Both console examples are pasted from real runs of the current engine,
not written by hand.
## Changelog
- New v2.15.0 (unreleased) entry: `--rev`, the stdin-hang fix, skip
visibility, and the tightened merge/fixup bypass.
- v2.14.0 stamped with its release date (published 2026-08-12).
- Highlights table row for 2.15.0.
`mkdocs build -s` passes (social cards disabled locally — the build
environment cannot reach fonts.google.com; nothing in this diff touches
that path).
Copy file name to clipboardExpand all lines: docs/changelog.md
+44-1Lines changed: 44 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,6 +11,7 @@ below and to the page that documents the feature properly.
11
11
12
12
| Version | What changed | Documented in |
13
13
|---|---|---|
14
+
|[2.15.0](#v2150)|`--rev` names the commit under test; skipped checks are named on stderr |[Command-line recipes](example.md#checking-a-range-of-commits)|
14
15
|[2.14.0](#v2140)| CC003 judges imperative mood by a word's form, not by a list of verbs |[CC003](rules.md#cc003)|
15
16
|[2.13.1](#v2131)| JSON output reports the checked value for passing checks |[Output for scripts and CI](example.md#output-for-scripts-and-ci)|
16
17
|[2.13.0](#v2130)| Stable rule IDs in terminal output and JSON |[Rules reference](rules.md)|
@@ -24,7 +25,49 @@ below and to the page that documents the feature properly.
24
25
|[2.5.0](#v250)| Organization-wide config with `inherit_from`|[Integrations](guides/integrations.md#across-an-organization)|
25
26
|[2.0.0](#v200)| Configuration moved from YAML to TOML — breaking |[Migrating from v1](migration.md)|
26
27
27
-
## v2.14.0 (unreleased) { #v2140 }
28
+
## v2.15.0 (unreleased) { #v2150 }
29
+
30
+
### Added
31
+
32
+
***`--rev REVISION` names the commit under test** — anything `git rev-parse`
33
+
understands: a SHA, `HEAD~2`, `HEAD^2`. Message checks read that commit's
34
+
message, and the author checks read **that commit's recorded author, never
35
+
the local git config** — an existing commit's identity is a fact about the
36
+
commit, not about whoever runs the check. Before `--rev`, CI could not
37
+
iterate a pull request's commits without checking each one out, and a
38
+
malformed author on any commit passed as long as the operator's own config
39
+
was valid. A revision that does not resolve is a one-line error before any
40
+
check runs; combining `--rev` with a message file or stdin is rejected,
41
+
since each would name a second subject for the same checks. See
42
+
[Checking a range of commits](example.md#checking-a-range-of-commits).
43
+
44
+
### Fixed
45
+
46
+
***The CLI no longer hangs on an open, idle stdin** — stdin was read
47
+
whenever it was not a terminal, for every check type. Under CI runners and
48
+
process managers that hand the process a pipe nothing ever writes to or
49
+
closes, `commit-check --author-name` blocked forever: a stuck step, not a
50
+
failed one. The read is now gated on data actually being available, and
51
+
genuinely piped input still works unchanged.
52
+
53
+
### Changed
54
+
55
+
***Skipped checks are named on stderr instead of passing in silence** — a
56
+
check that had nothing to judge (a merge subject under the subject rules,
57
+
an absent message) reports a skip, and text mode prints one line naming
58
+
every skipped check: `⊘ skipped (not validated): subject-max-length,
59
+
subject-min-length`. Exit codes are unchanged and stdout is untouched. The
60
+
case that motivated it: on a `pull_request` checkout `HEAD` is the
61
+
synthetic merge commit, so a bare `commit-check -m` used to exit `0`
62
+
having validated nothing it was asked about. See
63
+
[When a check is skipped](example.md#when-a-check-is-skipped).
64
+
65
+
***Only git's literal merge and fixup prefixes bypass the subject rules** —
66
+
the bypass matched any subject starting with the word "merge" in any case,
67
+
so an author's own `merge the parser tables` escaped judgement. Now only
68
+
the machine-written forms qualify: `Merge ` (and `fixup! ` for CC003).
0 commit comments