From 82f5e4ff31d76b06f56673fb6530cd6ee108868c Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 31 Jan 2018 15:46:37 +0100 Subject: [PATCH] add standard pre-push hook that runs basic gradle checks --- hooks/pre-push | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100755 hooks/pre-push diff --git a/hooks/pre-push b/hooks/pre-push new file mode 100755 index 000000000..e75b891a3 --- /dev/null +++ b/hooks/pre-push @@ -0,0 +1,60 @@ +#!/bin/sh + +# An 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: +# +# + +remote="$1" +url="$2" + +z40=0000000000000000000000000000000000000000 + +IFS=' ' +while read local_ref local_sha remote_ref remote_sha +do + if [ ! "$local_sha" = $z40 ] # not deleting from remote + then + if [ "$remote_sha" = $z40 ] + then + # New branch, examine all commits + range="$local_sha" + else + # Update to existing branch, examine new commits + range="$remote_sha..$local_sha" + fi + + if echo $url | grep 'gitlab.com[/:]fdroid/fdroidclient'; then + # Check for DO NOT MERGE commit + commit=`git rev-list -n 1 --grep 'DO NOT MERGE' "$range"` + if [ -n "$commit" ] + then + echo "Found DO NOT MERGE commit in $local_ref, not pushing" + exit 1 + fi + + # Check for WIP commit + commit=`git rev-list -n 1 --grep '^WIP' "$range"` + if [ -n "$commit" ] + then + echo "Found WIP commit in $local_ref, not pushing" + exit 1 + fi + fi + + gradle checkstyle pmd lint || exit 1 + fi +done + +exit 0