commit 과 push test
This commit is contained in:
86
.claude/hooks/install-git-hook.sh
Normal file
86
.claude/hooks/install-git-hook.sh
Normal file
@@ -0,0 +1,86 @@
|
||||
#!/usr/bin/env bash
|
||||
# .git/hooks/post-commit 을 설치해서 모든 커밋(IDE / 터미널 / git GUI 포함)에서
|
||||
# aptabase-commit.sh 가 호출되도록 한다.
|
||||
#
|
||||
# 사용법:
|
||||
# bash .claude/hooks/install-git-hook.sh # 설치
|
||||
# bash .claude/hooks/install-git-hook.sh --force # 기존 훅 덮어쓰기
|
||||
# bash .claude/hooks/install-git-hook.sh --uninstall
|
||||
set -euo pipefail
|
||||
|
||||
MARKER="# aptabase-commit-auto-hook"
|
||||
FORCE=false
|
||||
UNINSTALL=false
|
||||
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
--force) FORCE=true ;;
|
||||
--uninstall) UNINSTALL=true ;;
|
||||
-h|--help)
|
||||
sed -n '2,11p' "$0"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option: $arg" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
GIT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) || {
|
||||
echo "Error: not inside a git repository" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
HOOK_PATH="$GIT_ROOT/.git/hooks/post-commit"
|
||||
|
||||
if [[ "$UNINSTALL" == "true" ]]; then
|
||||
if [[ -f "$HOOK_PATH" ]] && grep -q "$MARKER" "$HOOK_PATH" 2>/dev/null; then
|
||||
rm -f "$HOOK_PATH"
|
||||
echo "Removed: $HOOK_PATH"
|
||||
else
|
||||
echo "Nothing to uninstall (no aptabase hook found at $HOOK_PATH)"
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 기존 훅 체크
|
||||
if [[ -f "$HOOK_PATH" ]]; then
|
||||
if grep -q "$MARKER" "$HOOK_PATH" 2>/dev/null; then
|
||||
echo "Already installed: $HOOK_PATH"
|
||||
exit 0
|
||||
fi
|
||||
if [[ "$FORCE" != "true" ]]; then
|
||||
echo "Error: existing post-commit hook found at $HOOK_PATH" >&2
|
||||
echo "" >&2
|
||||
echo "Options:" >&2
|
||||
echo " 1. Re-run with --force to overwrite (backup will be saved as .bak)" >&2
|
||||
echo " 2. Manually append the following line to the existing hook:" >&2
|
||||
echo "" >&2
|
||||
echo " bash .claude/hooks/aptabase-commit.sh < /dev/null 2>/dev/null || true" >&2
|
||||
echo "" >&2
|
||||
exit 1
|
||||
fi
|
||||
cp "$HOOK_PATH" "$HOOK_PATH.bak"
|
||||
echo "Backed up existing hook to: $HOOK_PATH.bak"
|
||||
fi
|
||||
|
||||
mkdir -p "$(dirname "$HOOK_PATH")"
|
||||
cat > "$HOOK_PATH" <<'EOF'
|
||||
#!/usr/bin/env bash
|
||||
# aptabase-commit-auto-hook
|
||||
# Auto-installed by .claude/hooks/install-git-hook.sh
|
||||
# 모든 커밋 후 aptabase-commit.sh 를 호출해 누적 토큰을 flush 한다.
|
||||
set -uo pipefail
|
||||
|
||||
PROJECT_HOOK="$(git rev-parse --show-toplevel 2>/dev/null)/.claude/hooks/aptabase-commit.sh"
|
||||
if [[ -f "$PROJECT_HOOK" ]]; then
|
||||
bash "$PROJECT_HOOK" < /dev/null >/dev/null 2>&1 || true
|
||||
fi
|
||||
exit 0
|
||||
EOF
|
||||
chmod +x "$HOOK_PATH"
|
||||
|
||||
echo "Installed: $HOOK_PATH"
|
||||
echo ""
|
||||
echo "이제 IDE, 터미널, git GUI 에서 커밋해도 aptabase 에 누적 토큰이 전송됩니다."
|
||||
Reference in New Issue
Block a user