#!/usr/bin/env sh # post-commit – Automatischer History-Log # # Läuft nach jedem erfolgreichen Commit. # Zwei Modi: # # A) Session-Datei gefunden (Agent hat /history ausgeführt): # → Git-Block wird an die bestehende Konversations-Datei ANGEHÄNGT. # Session-Dateien werden vom Agent mit dem Suffix "_session.md" erstellt. # # B) Keine Session-Datei für heute: # → Neuer Git-Stub (nur Metadaten, kein KI-Inhalt). # # Die Datei wird NICHT automatisch committed (kein Rekursionsrisiko). # Sie wird beim nächsten regulären Commit mit erfasst (history/ ist tracked). HASH=$(git rev-parse --short HEAD 2>/dev/null) FULL_HASH=$(git rev-parse HEAD 2>/dev/null) BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null) DATE=$(date '+%Y-%m-%d') DATETIME=$(date '+%Y-%m-%d %H:%M:%S') MSG=$(git log -1 --format='%s' 2>/dev/null) AUTHOR=$(git log -1 --format='%an <%ae>' 2>/dev/null) # Nur ausführen wenn history/prompts/ existiert if [ ! -d "history/prompts" ]; then exit 0 fi # Geänderte Dateien dieses Commits CHANGED_FILES=$(git diff-tree --no-commit-id -r --name-status "$FULL_HASH" 2>/dev/null \ | awk '{printf "| %-1s | %s |\n", $1, $2}') GIT_BLOCK=$(cat << EOF --- ## Git Commit | Feld | Wert | |---|---| | Datum | $DATETIME | | Branch | \`$BRANCH\` | | Commit | \`$FULL_HASH\` | | Autor | $AUTHOR | ### Commit Message \`\`\` $MSG \`\`\` ### Geänderte Dateien | Status | Datei | |---|---| $CHANGED_FILES --- *Git-Block automatisch generiert durch post-commit hook.* EOF ) # Modus A: Session-Datei vom Agent für heute suchen (Suffix: _session.md) SESSION_FILE=$(ls "history/prompts/${DATE}_"*"_session.md" 2>/dev/null | tail -1) if [ -n "$SESSION_FILE" ]; then printf '%s\n' "$GIT_BLOCK" >> "$SESSION_FILE" echo "" echo " ✓ history: Git-Block angehängt an $(basename "$SESSION_FILE")" echo " → Konversation + Commit in einer Datei" else # Modus B: Kein Agent-Log – reinen Git-Stub anlegen BRANCH_CLEAN=$(printf '%s' "$BRANCH" | tr '/' '-' | tr ' ' '-') OUTFILE="history/prompts/${DATE}_${BRANCH_CLEAN}_${HASH}.md" cat > "$OUTFILE" << STUB # Auto-Log: $MSG $GIT_BLOCK *Kein Agent-Log vorhanden. Für vollständige Konversation: Copilot Chat → \`/history\` vor dem Commit ausführen.* STUB echo "" echo " ✓ history: $(basename "$OUTFILE") geschrieben (nur Git-Metadaten)" echo " → Tipp: '/history' vor dem Commit für vollständige Konversation" fi echo " → wird beim nächsten Commit automatisch erfasst"