Fixed preventing git submodules from being committed

- because we now ignore git submodule changes, they didn't show up in
  `git diff --cached...`, so it was possible to get submodules to be
  committed
- you can re-enable submodules to be shown with `--ignore-submodules=none`
- this implements that
- we never want to allow submodules to be committed, so I've removed the
  prompt for faster feedback
This commit is contained in:
Daniel Lockyer 2023-03-28 12:13:16 +02:00
parent 7366f726e5
commit ec9181921b
No known key found for this signature in database

View File

@ -17,11 +17,11 @@ fi
green='\033[0;32m'
no_color='\033[0m'
grey='\033[0;90m'
red='\033[0;31m'
ROOT_DIR=$(git rev-parse --show-cdup)
SUBMODULES=$(grep path ${ROOT_DIR}.gitmodules | sed 's/^.*path = //')
MOD_SUBMODULES=$(git diff --cached --name-only | grep -F "$SUBMODULES")
MOD_SUBMODULES=$(git diff --cached --name-only --ignore-submodules=none | grep -F "$SUBMODULES")
echo -e "Checking submodules ${grey}(pre-commit hook)${no_color} "
@ -37,16 +37,8 @@ if [[ -n "$MOD_SUBMODULES" ]]; then
echo -e "\t${green}modified:\t$SUB${no_color}"
done
echo
echo -n -e "Continue with commit? ${grey}(N|y)${no_color} "
read -n 1 reply </dev/tty
echo
if [[ "$reply" == "y" || "$reply" == "Y" ]]; then
echo "Permitting submodules to be committed..."
exit 0
else
echo "Aborting commit due to submodule update."
exit 1
fi
echo -e "${red}Aborting commit due to submodule update. Please unstage the submodule(s) and commit again.${no_color}"
exit 1
else
echo "No submodules in commit, continuing..."
exit 0