Skip to content

Commit 12b3310

Browse files
hyperpolymathclaude
andcommitted
fix(ci): skip merge commits in Verify Commit Signatures (lockdown)
The verify-signatures job in lockdown.yml iterates `git log origin/main..HEAD` to enforce signatures on every commit. On a pull_request event, GitHub checks out `refs/pull/N/merge` — a simulated merge commit that is auto-generated and not GPG-signed — which the loop then flagged as an unsigned human commit. Surfaced on PR #89, where my (signed) ureq migration commit passed verification but the auto-merge commit `63b97bc…` triggered: ERROR: Unsigned commit detected: 63b97bc… All human commits MUST be GPG or SSH signed. Adding `--no-merges` to both `git log` invocations restricts the check to real human commits only. The auto-merge commit's parents (both real commits) are still checked. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 3a36f51 commit 12b3310

1 file changed

Lines changed: 7 additions & 1 deletion

File tree

.github/workflows/lockdown.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,13 @@ jobs:
3939
# Trusted bot accounts that don't require signatures
4040
TRUSTED_BOTS="noreply@anthropic.com github-actions[bot] dependabot[bot]"
4141
42-
for commit in $(git log --format=%H origin/main..HEAD 2>/dev/null || git log --format=%H -10); do
42+
# On a pull_request event, GitHub checks out the simulated
43+
# merge commit `refs/pull/N/merge`, which is auto-generated
44+
# and not GPG-signed. Skip merge commits (`--no-merges`) so
45+
# only real human commits are verified. This was missing the
46+
# auto-merge case and rejected every PR on the first push
47+
# (saw on PR #89, 2026-05-25).
48+
for commit in $(git log --no-merges --format=%H origin/main..HEAD 2>/dev/null || git log --no-merges --format=%H -10); do
4349
AUTHOR_EMAIL=$(git log -1 --format='%ae' "$commit")
4450
AUTHOR_NAME=$(git log -1 --format='%an' "$commit")
4551

0 commit comments

Comments
 (0)