39 lines
1.2 KiB
Bash
39 lines
1.2 KiB
Bash
#!/bin/bash
|
|
# UserPromptSubmit hook용 5분 throttle된 git fetch + 변경 알림
|
|
# C20-7·C18 운용: 부서 세션이 매 입력 시 5분 이내 main 변경 자동 감지
|
|
# 적용 시점: 2026-04-15 PD님 B안 승인 (Phase 2)
|
|
|
|
THROTTLE_DIR="$HOME/.claude/.nerdnavis_throttle"
|
|
mkdir -p "$THROTTLE_DIR" 2>/dev/null
|
|
|
|
GIT_DIR=$(git rev-parse --git-dir 2>/dev/null)
|
|
[ -z "$GIT_DIR" ] && exit 0 # git 레포 아님 — 조용히 종료
|
|
|
|
REPO_HASH=$(echo "$GIT_DIR" | sha1sum 2>/dev/null | cut -d' ' -f1)
|
|
THROTTLE_FILE="$THROTTLE_DIR/last_fetch_$REPO_HASH"
|
|
THROTTLE_SECONDS=300 # 5분
|
|
|
|
if [ -f "$THROTTLE_FILE" ]; then
|
|
LAST=$(cat "$THROTTLE_FILE" 2>/dev/null || echo 0)
|
|
NOW=$(date +%s)
|
|
if [ $((NOW - LAST)) -lt $THROTTLE_SECONDS ]; then
|
|
exit 0 # throttle 적용
|
|
fi
|
|
fi
|
|
|
|
git fetch origin 2>/dev/null
|
|
date +%s > "$THROTTLE_FILE"
|
|
|
|
CHANGES=$(git log --oneline HEAD..origin/main 2>/dev/null | head -5)
|
|
if [ -n "$CHANGES" ]; then
|
|
echo "📌 [auto-sync] origin/main 변경 검출:"
|
|
echo "$CHANGES"
|
|
git merge origin/main --no-edit --ff-only 2>/dev/null
|
|
if [ $? -eq 0 ]; then
|
|
echo "✅ 자동 동기화 완료 (ff-only)"
|
|
else
|
|
echo "⚠️ 자동 merge 불가 — 세션 갱신으로 수동 해결 필요"
|
|
fi
|
|
fi
|
|
exit 0
|