/
kochenov
/
universal-m
Обзор
Документация
Войти
/
kochenov
/
universal-m
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
scripts/git_commit_guard.sh
46 строк
2 KB
Kochenov Dmitry
initial project start
11 июл 2026, 09:51
11 июл 2026, 09:51
44a1de1
Код
Авторство
О чём код?
#!/usr/bin/env bash # Pre-commit guard: блокирует commit в main вне scripts/finalize_step.py # # Установка (после git init): # cp scripts/git_commit_guard.sh .git/hooks/pre-commit # chmod +x .git/hooks/pre-commit # # Как работает: # - Если текущая ветка main и env STEP_FINALIZER_ACTIVE не установлена — отказ. # - scripts/finalize_step.py перед своим 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 вне scripts/finalize_step.py запрещён. Причина: нарушение принципа «один шаг = один squash-коммит в feature-ветке = один merge в main» (см. 00-agent-protocol.md §7.4). Если ты scripts/finalize_step.py — установи 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