mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 19:01:54 +00:00
git writes MERGE_HEAD only after the pre-merge-commit hook returns, so the gate never found it and aborted every non-fast-forward merge with "No merge in progress"; git then wrote the merge state via abort_commit(), leaving a half-finished merge that git status reported as "still merging". The gate had therefore never verified a single signature. git also skips pre-merge-commit entirely once a merge conflicts, so the conflict-resolution commit was unguarded as well. prepare-commit-msg fires with MERGE_HEAD present on both paths and no-ops on ordinary commits. Verified in a scratch repo with a real pre-commit install: ordinary commit passes silently, clean automerge and conflict-resolution commit both block an unsigned incoming commit, and the extra stash/restore cycle round-trips unstaged changes byte-identically. pre_commit install never removes hook types dropped from the config, so the install script now also uninstalls the stale pre-merge-commit hook.
9 lines
200 B
Bash
Executable File
9 lines
200 B
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
: "${PYTHON:?PYTHON not set}"
|
|
|
|
echo "🔗 Installing pre-commit hooks"
|
|
"${PYTHON}" -m pre_commit install
|
|
"${PYTHON}" -m pre_commit uninstall -t pre-merge-commit
|