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