feat: .commit-on-main Opt-out fuer Branch-Schutz

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-04 08:30:32 +02:00
co-authored by Claude Opus 4.6
parent f86d4c9b7e
commit 8eb8ad3a2c
3 changed files with 5 additions and 4 deletions
View File
+2 -2
View File
@@ -117,7 +117,7 @@ Kurzbefehl für den gesamten Ablauf: `/story`
| Event | Trigger | Skript | Aktion | | Event | Trigger | Skript | Aktion |
|---|---|---|---| |---|---|---|---|
| `PreToolUse` | Bash | `hooks/pre-bash-checks.sh` | Git-main-Schutz, Commit-Message-Validierung (Conventional Commits), apt -y Blockade | | `PreToolUse` | Bash | `hooks/pre-bash-checks.sh` | Git-main-Schutz (Opt-out: `.commit-on-main`), Commit-Message-Validierung (Conventional Commits), apt -y Blockade |
| `PostToolUse` | Edit / Write | `hooks/auto-format.sh` | `ruff` (Python), `eslint --fix` (JS/TS/Vue) oder `shellcheck` (Bash) | | `PostToolUse` | Edit / Write | `hooks/auto-format.sh` | `ruff` (Python), `eslint --fix` (JS/TS/Vue) oder `shellcheck` (Bash) |
| `Stop` | Session-Ende | `hooks/verify-on-stop.sh` | Uncommittete Änderungen anzeigen | | `Stop` | Session-Ende | `hooks/verify-on-stop.sh` | Uncommittete Änderungen anzeigen |
@@ -139,7 +139,7 @@ Kurzbefehl für den gesamten Ablauf: `/story`
## Git-Workflow (Abweichung von globaler CLAUDE.md) ## Git-Workflow (Abweichung von globaler CLAUDE.md)
In diesem Repository wird **direkt auf `main` committet** — ohne Feature-Branches und ohne PRs. Die globale Regel „Niemals direkt auf main committen" gilt hier nicht, da es sich um ein Konfigurations-Repo ohne Deployment-Pipeline handelt. In diesem Repository wird **direkt auf `main` committet** — ohne Feature-Branches und ohne PRs. Die globale Regel „Niemals direkt auf main committen" gilt hier nicht, da es sich um ein Konfigurations-Repo ohne Deployment-Pipeline handelt. Die Datei `.commit-on-main` im Repo-Root signalisiert dem PreToolUse-Hook, den Branch-Schutz zu überspringen.
## Gitea-Integration ## Gitea-Integration
+3 -2
View File
@@ -18,9 +18,10 @@ extract_subject() {
# Git-Commit-Pruefungen # Git-Commit-Pruefungen
if echo "$cmd" | grep -qE '^\s*git\s+commit\b'; then if echo "$cmd" | grep -qE '^\s*git\s+commit\b'; then
# Branch-Schutz: kein direkter Commit auf main # Branch-Schutz: kein direkter Commit auf main (sofern kein Opt-out per Markerdatei)
branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "") branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "")
if [ "$branch" = "main" ]; then repo_root=$(git rev-parse --show-toplevel 2>/dev/null || echo "")
if [ "$branch" = "main" ] && [ ! -f "${repo_root}/.commit-on-main" ]; then
printf '{"continue":false,"stopReason":"BLOCKIERT: Direkter Commit auf main verboten (globale Regel). Bitte zuerst Feature-Branch erstellen: git checkout -b session/YYYY-MM-DD-titel"}\n' printf '{"continue":false,"stopReason":"BLOCKIERT: Direkter Commit auf main verboten (globale Regel). Bitte zuerst Feature-Branch erstellen: git checkout -b session/YYYY-MM-DD-titel"}\n'
exit 0 exit 0
fi fi