/
kochenov
/
universal-modular
Обзор
Документация
Войти
/
kochenov
/
universal-modular
Код
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
scripts/git_commit_guard.sh
46 строк
2 KB
Kochenov Dmitry
feat(foundation): Шаг 1.0 — Verify clone + создать STEP_STATE.md из template
10 июл 2026, 10:27
10 июл 2026, 10:27
8a5d435
Код
Авторство
О чём код?
#!/usr/bin/env bash # Pre-commit guard: блокирует commit в main вне step-finalizer.md # # Установка (после git init): # cp scripts/git_commit_guard.sh .git/hooks/pre-commit # chmod +x .git/hooks/pre-commit # # Как работает: # - Если текущая ветка main и env STEP_FINALIZER_ACTIVE не установлена — отказ. # - step-finalizer.md перед своим git commit делает: export STEP_FINALIZER_ACTIVE=1 # - Любой другой commit в main — блокируется. # # Связано с: 00-agent-protocol.md §7.4 (аудит чат-лога 1.7 — Проблема #4). set -euo pipefail branch="$(git branch --show-current 2>/dev/null || echo '')" if [ "$branch" = "main" ]; then if [ -z "${STEP_FINALIZER_ACTIVE:-}" ]; then cat >&2 <<'EOF' БЛОКИРОВКА: прямой commit в main вне step-finalizer.md запрещён. Причина: нарушение принципа «один шаг = один squash-коммит в feature-ветке = один merge в main» (см. 00-agent-protocol.md §7.4). Если ты step-finalizer.md — установи STEP_FINALIZER_ACTIVE=1 перед git commit: export STEP_FINALIZER_ACTIVE=1 git commit -m "..." Если ты главный агент — НЕ коммить в main. Используй feature-ветку: git checkout -b feature/step-X.Y-<slug> git commit -m "..." Если нужно отменить staged-изменения в main: git reset HEAD . git checkout -- . Для обхода (НЕ рекомендуется, только для recovery): STEP_FINALIZER_ACTIVE=1 git commit -m "..." EOF exit 1 fi fi exit 0