fix(scripts/check_emdash.sh): skip emdash check when no diff base is available by f0ssel · Pull Request #26489 · coder/coder · GitHub
Skip to content

fix(scripts/check_emdash.sh): skip emdash check when no diff base is available#26489

Merged
f0ssel merged 1 commit into
mainfrom
f0ssel/fix-emdash-no-base-ref
Jun 17, 2026
Merged

fix(scripts/check_emdash.sh): skip emdash check when no diff base is available#26489
f0ssel merged 1 commit into
mainfrom
f0ssel/fix-emdash-no-base-ref

Conversation

@f0ssel

@f0ssel f0ssel commented Jun 17, 2026

Copy link
Copy Markdown
Member

Problem

scripts/check_emdash.sh is a diff gate for pull requests: it resolves the merge-base against the target branch and only inspects added lines. When it cannot resolve a base ref, it fell back to scanning every tracked file.

Push builds on release branches hit exactly this case: the lint job checks out with fetch-depth: 1, so origin/main is absent, and GITHUB_BASE_REF is only set for pull_request events. With no base ref, the whole-tree scan flags the many pre-existing emdash/endash characters already in the repo and fails make lint (lint/emdash), even though the build introduced none of them. Observed on release/2.34 CI (run 27704528068).

Fix

When no base ref can be determined (i.e. outside a pull request), skip the check instead of scanning the entire tree. A full scan remains available on demand via scripts/check_emdash.sh --all.

Testing

  • No base ref (release-push simulation, no GITHUB_BASE_REF, no origin/main): old script scans all files and fails on a pre-existing emdash; new script skips and exits 0.
  • PR path (diff vs merge-base): OK: no emdash or endash characters found.
  • --all: still scans the full tree (flags pre-existing characters as before).
  • shellcheck and shfmt clean.

Backports

Backport PRs target release/2.33 and release/2.34 (same bug, older script variant). release/2.29 and release/2.32 do not contain scripts/check_emdash.sh, so there is nothing to backport there.

Decision log

Considered alternatives to the skip:

  1. Compare against github.event.before on push events. Rejected: the before-SHA is frequently unreachable in a fetch-depth: 1 clone, and wiring it in requires per-workflow env changes that complicate backports.
  2. Fetch origin/main / deepen history in the release lint job. Rejected for the same backport-surface reason and because it only masks the design intent.

The check exists to stop new emdashes from landing via PRs; that gate already ran on the originating PRs. On non-PR builds there is no meaningful diff base, so skipping is correct and self-contained in the script (clean to backport). The explicit --all mode is preserved for intentional full-tree audits.


Generated by Coder Agents on behalf of @f0ssel.

The emdash/endash check is a diff gate for pull requests: it resolves
the merge-base against the target branch and only inspects added lines.
When no base ref can be resolved, the script fell back to scanning every
tracked file.

Push builds on release branches hit exactly this case. The lint job
checks out with fetch-depth: 1, so origin/main is absent, and
GITHUB_BASE_REF is only set for pull_request events. With no base ref,
the whole-tree scan flags the many pre-existing emdash/endash characters
already in the repo and fails lint/emdash, even though the build
introduced none of them.

Skip the check in that case instead of scanning everything. A full scan
is still available explicitly via --all.
@f0ssel f0ssel merged commit e188ee0 into main Jun 17, 2026
57 checks passed
@f0ssel f0ssel deleted the f0ssel/fix-emdash-no-base-ref branch June 17, 2026 20:30
f0ssel added a commit that referenced this pull request Jun 17, 2026
…available (#26490)

Backport of #26489 to `release/2.34`.

## Problem

On `release/2.34`, `make lint` (`lint/emdash`) fails on push builds.
`scripts/check_emdash.sh` only resolves a base ref for pull requests
(`GITHUB_BASE_REF`) or when `origin/main` is present. The `lint` job
checks out with `fetch-depth: 1`, so on a release-branch push neither is
available, and the script falls back to scanning **every tracked file**,
flagging pre-existing emdash/endash characters the build did not
introduce. Observed on run
[27704528068](https://github.com/coder/coder/actions/runs/27704528068/job/81949529546).

## Fix

When no base ref can be determined (outside a pull request), skip the
check instead of scanning the whole tree. `--all` still forces a full
scan.

Note: this branch carries an older variant of the script than `main`, so
the change is applied by hand rather than cherry-picked, but the
behavior matches #26489.

## Testing

- Isolated no-base-ref repo (no `GITHUB_BASE_REF`, no `origin/main`):
old script scans all files and fails on a pre-existing emdash; patched
script skips and exits 0.
- `shellcheck`, `shfmt`, `bash -n` clean.

---
Generated by Coder Agents on behalf of @f0ssel.
f0ssel added a commit that referenced this pull request Jun 17, 2026
…available (#26491)

Backport of #26489 to `release/2.33`.

## Problem

`scripts/check_emdash.sh` only resolves a base ref for pull requests
(`GITHUB_BASE_REF`) or when `origin/main` is present. The `lint` job
checks out with `fetch-depth: 1`, so on a release-branch push neither is
available, and the script falls back to scanning **every tracked file**,
flagging pre-existing emdash/endash characters the build did not
introduce. This is the same failure mode seen on the `release/2.34` push
build (run
[27704528068](https://github.com/coder/coder/actions/runs/27704528068/job/81949529546));
`release/2.33` carries the same script and the same bug.

## Fix

When no base ref can be determined (outside a pull request), skip the
check instead of scanning the whole tree. `--all` still forces a full
scan.

Note: this branch carries an older variant of the script than `main`, so
the change is applied by hand rather than cherry-picked, but the
behavior matches #26489.

## Testing

- Isolated no-base-ref repo (no `GITHUB_BASE_REF`, no `origin/main`):
old script scans all files and fails on a pre-existing emdash; patched
script skips and exits 0.
- `shellcheck`, `shfmt`, `bash -n` clean.

---
Generated by Coder Agents on behalf of @f0ssel.
@github-actions github-actions Bot locked and limited conversation to collaborators Jun 17, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants