Skip to content

Commit e419a4b

Browse files
trz-21claude
andauthored
fix: spec-sync-check 훅의 Wiki 리마인드 타이밍·범위 개선 (#33)
Wiki 동기화가 반복 누락된 구조적 원인 2가지를 수정한다. 1. 타이밍: git diff(워킹트리)만 보던 것을 merge-base main...HEAD 커밋 diff와 합집합으로 확장. 피처 브랜치에서 커밋 후에도 Stop 시 리마인드가 유지된다(기존엔 커밋되면 diff가 비어 침묵). 2. 범위: frontend/src/features 만 매칭하던 패턴에 frontend/{app,src/shared} → Frontend, frontend/tests·backend/tests· .github/workflows → Harness 추가. #31(tests/e2e)이 탐지 안 되던 문제 해소. Closes #32 Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent c002763 commit e419a4b

1 file changed

Lines changed: 20 additions & 4 deletions

File tree

.claude/hooks/spec-sync-check.sh

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,32 @@ git rev-parse --git-dir &>/dev/null || exit 0
99

1010
# 스펙의 최종 현황은 GitHub Wiki(canonical). 구조적 코드 변경 시,
1111
# 갱신이 필요할 수 있는 Wiki 페이지를 비차단으로 리마인드한다. (.claude/github-workflow.md)
12-
CHANGED=$(git diff --name-only 2>/dev/null; git diff --name-only --cached 2>/dev/null)
13-
CHANGED=$(echo "$CHANGED" | sort -u)
12+
#
13+
# 탐지 소스 = 워킹트리/스테이징 diff ∪ 피처 브랜치 커밋 diff.
14+
# diff(uncommitted)만 보면 커밋 직후 리마인드가 사라진다(작업 마무리 시점엔 이미 커밋됨).
15+
# 따라서 현재 브랜치가 main/master가 아니면 merge-base 이후 커밋분도 함께 본다. (refs #32)
16+
WORKING=$(git diff --name-only 2>/dev/null; git diff --name-only --cached 2>/dev/null)
17+
18+
COMMITTED=""
19+
BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null)
20+
if [ -n "$BRANCH" ] && [ "$BRANCH" != "main" ] && [ "$BRANCH" != "master" ]; then
21+
BASE=$(git merge-base HEAD main 2>/dev/null || git merge-base HEAD origin/main 2>/dev/null)
22+
[ -n "$BASE" ] && COMMITTED=$(git diff --name-only "$BASE"...HEAD 2>/dev/null)
23+
fi
24+
25+
CHANGED=$(printf '%s\n%s\n' "$WORKING" "$COMMITTED" | sort -u | grep -v '^$')
1426
[ -z "$CHANGED" ] && exit 0
1527

1628
PAGES=()
1729
echo "$CHANGED" | grep -qE "^backend/src/(application|domain|adapters)/" && PAGES+=("Backend")
1830
echo "$CHANGED" | grep -qE "^backend/src/http/(handlers/|router\.rs)" && PAGES+=("API")
19-
echo "$CHANGED" | grep -qE "^frontend/src/features/" && PAGES+=("Frontend")
31+
echo "$CHANGED" | grep -qE "^frontend/(src/features/|src/shared/|app/)" && PAGES+=("Frontend")
32+
echo "$CHANGED" | grep -qE "^(frontend/tests/|backend/tests/|\.github/workflows/)" && PAGES+=("Harness")
2033

2134
[ ${#PAGES[@]} -eq 0 ] && exit 0
2235

36+
# 중복 페이지 제거
37+
PAGES=($(printf '%s\n' "${PAGES[@]}" | sort -u))
38+
2339
echo "⚠️ 코드 변경 감지 — GitHub Wiki 페이지 갱신이 필요한지 확인하세요:" >&2
24-
printf " - Wiki: %s\n" "${PAGES[@]}" >&2
40+
printf " - Wiki: %s\n" "${PAGES[@]}" >&2

0 commit comments

Comments
 (0)