chore: Add git hook setup script for submodule safety
This script installs a pre-push hook that prevents pushing commits when submodules have uncommitted changes, helping avoid accidental commits with dirty submodule states. The hook checks all submodules for uncommitted changes before allowing a push, protecting against pushing incomplete work that includes submodule modifications.
This commit is contained in:
Executable
+18
@@ -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."
|
||||
Reference in New Issue
Block a user