diff --git a/scripts/setup-git-hooks.sh b/scripts/setup-git-hooks.sh new file mode 100755 index 0000000..cd9ca02 --- /dev/null +++ b/scripts/setup-git-hooks.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# One-time setup for git hooks on this machine +echo "🔒 Installing pre-push safety hook to prevent pushing with uncommitted submodule changes..." +# Create pre-push hook +mkdir -p .git/hooks +cat >.git/hooks/pre-push <<'EOF' +#!/bin/bash +# Prevent pushing if submodules have uncommitted changes +uncommitted=$(git submodule foreach --quiet 'if [ "$(git status --porcelain)" != "" ]; then echo $name; fi') +if [ -n "$uncommitted" ]; then + echo "❌ ERROR: Submodules have uncommitted changes:" + echo "$uncommitted" + echo "Commit submodules first (or use git sc-commit)" + exit 1 +fi +EOF + +echo "✅ Git hooks installed! Submodule changes will be checked before pushing."