From patchwork Thu Mar 26 11:49:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 3326 Return-Path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 2515A60410 for ; Thu, 26 Mar 2020 12:49:28 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="TokUd3g6"; dkim-atps=neutral Received: from pendragon.bb.dnainternet.fi (81-175-216-236.bb.dnainternet.fi [81.175.216.236]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 9B5192DC for ; Thu, 26 Mar 2020 12:49:27 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1585223367; bh=aCc6lpIwjV619u08R7xQRKYnKL+RbSiTxyTdeOuMNiI=; h=From:To:Subject:Date:From; b=TokUd3g6FBQ3EwkaH+Z/SGNl4maNK1ntqY7WCTIzJzTHTBSmsRCBzJtAQc2V+vE9L y1ve8y/4/TgAxrHehTxqRLJnqbpDYLygEKVFud7NVqCU/E0R2NepNjuUfGUBF6pUWs /F9+BNPVBYywfc1l3XtH4m0tb3Ysd5xGjuMVhHaw= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Date: Thu, 26 Mar 2020 13:49:20 +0200 Message-Id: <20200326114920.4716-1-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.24.1 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH] utils: hooks: Add pre-push commit hook X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Mar 2020 11:49:28 -0000 Add a pre-push commit hooks to prevent unintentional push of patches containing local changelogs to the master branch. Signed-off-by: Laurent Pinchart --- utils/hooks/pre-push | 59 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100755 utils/hooks/pre-push diff --git a/utils/hooks/pre-push b/utils/hooks/pre-push new file mode 100755 index 000000000000..dc054b2553ff --- /dev/null +++ b/utils/hooks/pre-push @@ -0,0 +1,59 @@ +#!/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: +# +# +# +# This script prevents push of commits than contain a local changelog to the +# master branch. + +remote="$1" +url="$2" + +z40=0000000000000000000000000000000000000000 + +while read local_ref local_sha remote_ref remote_sha +do + if [ "$remote_ref" != refs/heads/master ] + then + continue + fi + + if [ "$local_sha" = $z40 ] + then + # Handle delete + : + else + 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 + + # Check for WIP commit + commit=`git rev-list -n 1 --grep '^---' "$range"` + if [ -n "$commit" ] + then + echo >&2 "Found local changelog in $local_ref, not pushing" + echo >&2 "Check commit $commit" + exit 1 + fi + fi +done + +exit 0