#!/usr/bin/env bash # サーバー上で root として手動実行する # server-hooks/ の内容を /var/git/*/hooks/ に展開する set -euo pipefail APP_DIR="$(cd "$(dirname "$0")/.." && pwd)" HOOKS_SRC="$APP_DIR/server-hooks" if [[ "$(id -u)" -ne 0 ]]; then echo "ERROR: root として実行してください" >&2 exit 1 fi for repo_src in "$HOOKS_SRC"/*/; do repo_name="$(basename "$repo_src")" git_hooks_dir="/var/git/${repo_name}.git/hooks" if [[ ! -d "$git_hooks_dir" ]]; then echo "SKIP: $git_hooks_dir が存在しません ($repo_name)" continue fi for hook_file in "$repo_src"*; do hook_name="$(basename "$hook_file")" dst="$git_hooks_dir/$hook_name" if diff -q "$hook_file" "$dst" >/dev/null 2>&1; then echo " unchanged: $repo_name/$hook_name" else cp "$hook_file" "$dst" chmod +x "$dst" echo " installed: $repo_name/$hook_name" fi done done echo "Done."