#!/bin/bash # SessionStart hook — 레포 memory/org/audit_logs/ 를 중앙으로 sync (git pull 직후 최신화) # 2026-04-20 #48 G 집행 신설. C34-17 sync 4계층 중 "레포 → 중앙" 방향 # 각 PC hostname 폴더만 자기 PC 로그이고 그 외는 다른 PC 로그 (PC 간 공유) REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) [ -z "$REPO_ROOT" ] && exit 0 REPO_AUDIT="$REPO_ROOT/memory/org/audit_logs" [ ! -d "$REPO_AUDIT" ] && exit 0 CENTRAL_AUDIT="$HOME/.claude/nerdnavis-audit" [ ! -d "$CENTRAL_AUDIT" ] && exit 0 HOSTNAME_TAG=$(hostname 2>/dev/null | tr -d '[:space:]' | tr -cd '[:alnum:]-_' | head -c 32) [ -z "$HOSTNAME_TAG" ] && HOSTNAME_TAG="unknown" SUBDIRS=("auditor_calls" "warning_ignored" "bypass_log") # 자기 PC hostname 폴더: 레포 → 중앙 (unflushed 중앙 변경 대피 후 레포본 복원) SELF_DIR="$REPO_AUDIT/$HOSTNAME_TAG" if [ -d "$SELF_DIR" ]; then for SUB in "${SUBDIRS[@]}"; do CENTRAL_SUB="$CENTRAL_AUDIT/$SUB" REPO_SUB="$SELF_DIR/$SUB" [ ! -d "$REPO_SUB" ] && continue mkdir -p "$CENTRAL_SUB" 2>/dev/null for f in "$REPO_SUB"/*.log; do [ -f "$f" ] || continue BASENAME=$(basename "$f") CENTRAL_FILE="$CENTRAL_SUB/$BASENAME" # unflushed 중앙 대피: 중앙이 레포보다 최신이고 레포 HEAD 커밋 미반영이면 대피 if [ -f "$CENTRAL_FILE" ] && [ "$CENTRAL_FILE" -nt "$f" ]; then if ! git -C "$REPO_ROOT" log --oneline HEAD -- "memory/org/audit_logs/$HOSTNAME_TAG/$SUB/$BASENAME" 2>/dev/null | grep -q .; then CONFLICT="$CENTRAL_AUDIT.conflict-$(date +%Y%m%d_%H%M%S)" mkdir -p "$CONFLICT/$SUB" 2>/dev/null cp "$CENTRAL_FILE" "$CONFLICT/$SUB/$BASENAME" 2>/dev/null echo "⚠️ [Audit Sync Repo→Central] 중앙 unflushed 대피: $CONFLICT/$SUB/$BASENAME" >&2 fi fi cp "$f" "$CENTRAL_FILE" 2>/dev/null done done fi exit 0