#!/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"