#!/bin/sh # A hook script to verify what is about to be pushed. Called by "git push" # after it has checked the remote status, but before anything has been pushed. # If this script exits with a non-zero status nothing will be pushed. # # This hook is called with the following parameters: # # $1 -- Name of the remote to which the push is being done # $2 -- URL to which the push is being done # # If pushing without using a named remote those arguments will be equal. # # Information about the commits which are being pushed is supplied as lines to # the standard input in the form: # # # # To enable this hook, save or link this file at `.git/hooks/pre-push`. # # This prevents pushing of commits where the log message starts with "WIP" (work # in progress) or "{fixup,squash}!" (Autosquash, see git-rebase(1)). remote="$1" url="$2" zero=$(git hash-object --stdin &2 "$local_ref: Commits in progress:\n%s" "$commits" printf >&2 "Aborting push" exit 1 fi fi done exit 0