32 lines
823 B
Bash
32 lines
823 B
Bash
#!/usr/bin/env bash
|
|
|
|
if [[ ! -a .ciignore ]]; then
|
|
exit # If .ciignore doesn't exists, just quit this Git hook
|
|
fi
|
|
|
|
# Load in every file that will be changed via this commit into an array
|
|
changes=( `git diff --name-only --cached` )
|
|
|
|
# Load the patterns we want to skip into an array
|
|
mapfile -t blocklist < .ciignore
|
|
|
|
for i in "${blocklist[@]}"
|
|
do
|
|
# Remove the current pattern from the list of changes
|
|
changes=( ${changes[@]/$i/} )
|
|
|
|
if [[ ${#changes[@]} -eq 0 ]]; then
|
|
# If we've exhausted the list of changes before we've finished going
|
|
# through patterns, that's okay, just quit the loop
|
|
break
|
|
fi
|
|
done
|
|
|
|
if [[ ${#changes[@]} -gt 0 ]]; then
|
|
# If there's still changes left, then we have stuff to build, leave the commit alone.
|
|
exit
|
|
fi
|
|
|
|
# Prefix the commit message with "[skip ci]"
|
|
sed -i '1s/^/[skip ci] /' "$1"
|