/
nv-lang
/
nova-http
Обзор
Документация
Войти
/
nv-lang
/
nova-http
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
main
scripts/githooks/pre-commit
43 строки
2 KB
Evgeniy Golovin
hooks: pre-commit проверяет пару README (en+ru) — решение владельца 2026-08-03; у bignum хуков не было вовсе, заведены (маркеры конфликта + авторство + README-пара)
03 авг 2026, 22:29
03 авг 2026, 22:29
72e9e0f
Код
Авторство
О чём код?
#!/bin/sh # pre-commit (план 231 трек Д): машинные версии стоячих правил. # 1) Конфликт-маркеры в staged. if git diff --cached | grep -E '^\+(<<<<<<<|>>>>>>>|=======$)' >/dev/null 2>&1; then echo "pre-commit: conflict markers in staged — commit blocked." >&2 exit 1 fi # 2) Авторство: не Claude/anthropic (урок 2026-07-25, 349 коммитов). AN=$(git config user.name) AE=$(git config user.email) case "$AN $AE" in *[Cc]laude*|*anthropic*) echo "pre-commit: author '$AN <$AE>' blocked — restore owner git identity." >&2 exit 1;; esac # 3) 232 Ф.3: амендмент decisions без касания обзорных spec/*.md и без маркера [overview: n/a]. if git diff --cached --name-only | grep -q '^spec/decisions/'; then if ! git diff --cached --name-only | grep -qE '^spec/[^/]+\.md$'; then MSG_FILE="$1" if [ -z "${1:-}" ] || ! grep -q '\[overview: n/a\]' "${MSG_FILE:-/dev/null}" 2>/dev/null; then # pre-commit не видит сообщение — проверка маркера в commit-msg невозможна здесь; # мягкий блок с подсказкой обхода через env-переменную. if [ -z "${NOVA_OVERVIEW_NA:-}" ]; then echo "pre-commit(232): staged menyaet spec/decisions/, no ne trogaet obzornye spec/*.md." >&2 echo " Libo obnovi zatronutyi spec/<tema>.md v etom zhe kommite," >&2 echo " libo osoznanno propusti: NOVA_OVERVIEW_NA=1 git commit ..." >&2 exit 1 fi fi fi fi exit 0 # 4) README пакета — ВСЕГДА пара en+ru (решение владельца 2026-08-03, # doc-conventions #language; страж doc-conventions делает то же самое в nova). if [ -f README.md ] && [ ! -f README.ru.md ]; then echo "pre-commit(readme_pair): est README.md, net README.ru.md — para obyazatelna." >&2 exit 1 fi if [ -f README.ru.md ] && [ ! -f README.md ]; then echo "pre-commit(readme_pair): est README.ru.md, net README.md — para obyazatelna." >&2 exit 1 fi