From patchwork Fri Nov 27 14:34:57 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ferruh Yigit X-Patchwork-Id: 9161 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 183C458E1; Fri, 27 Nov 2015 15:35:05 +0100 (CET) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 3A97858D8 for ; Fri, 27 Nov 2015 15:35:03 +0100 (CET) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga101.fm.intel.com with ESMTP; 27 Nov 2015 06:35:02 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,352,1444719600"; d="scan'208";a="861000279" Received: from irvmail001.ir.intel.com ([163.33.26.43]) by fmsmga002.fm.intel.com with ESMTP; 27 Nov 2015 06:35:01 -0800 Received: from sivswdev02.ir.intel.com (sivswdev02.ir.intel.com [10.237.217.46]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id tAREZ03c017653; Fri, 27 Nov 2015 14:35:00 GMT Received: from sivswdev02.ir.intel.com (localhost [127.0.0.1]) by sivswdev02.ir.intel.com with ESMTP id tAREZ03I001229; Fri, 27 Nov 2015 14:35:00 GMT Received: (from fyigit@localhost) by sivswdev02.ir.intel.com with id tAREZ0CB001225; Fri, 27 Nov 2015 14:35:00 GMT From: Ferruh Yigit To: dev@dpdk.org Date: Fri, 27 Nov 2015 14:34:57 +0000 Message-Id: <1448634897-1193-1-git-send-email-ferruh.yigit@intel.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1446160974-31675-1-git-send-email-ferruh.yigit@intel.com> References: <1446160974-31675-1-git-send-email-ferruh.yigit@intel.com> Subject: [dpdk-dev] [PATCH v2] scripts: add git hook scripts for checkpatch and auto doc generation X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" These scripts are to automate some common tasks, scripts needs to be deployed to specific folder to become active. Scripts: post-commit: Triggers after commit complete, re-generates api and guides html documents. "RTE_DOC_OUT" environment variable configures document output folder. Same script can be used on server side with name "post-update", so documentation can auto updated after each push to server. post-merge: Same script as "post-commit", but triggered after git pull pre-commit: Does a checkpatch check before commit started. This script relies on scripts/checkpatches.sh script. checkpathes.sh should be running well to use this git hook script. This script can bypassed by commit "--no-verify" argument. Deployment: To make scripts active they need to be in /.git/hooks folder. Alternatively "deploy.sh" script can be used, it simply links all scripts into proper folder. Script names are significant and shouldn't changed. Signed-off-by: Ferruh Yigit --- scripts/checkpatches.sh | 1 + scripts/git-hooks/deploy.sh | 20 ++++++++++++++++++++ scripts/git-hooks/post-commit | 10 ++++++++++ scripts/git-hooks/post-merge | 1 + scripts/git-hooks/pre-commit | 17 +++++++++++++++++ 5 files changed, 49 insertions(+) create mode 100755 scripts/git-hooks/deploy.sh create mode 100755 scripts/git-hooks/post-commit create mode 120000 scripts/git-hooks/post-merge create mode 100755 scripts/git-hooks/pre-commit diff --git a/scripts/checkpatches.sh b/scripts/checkpatches.sh index afc611b..8192514 100755 --- a/scripts/checkpatches.sh +++ b/scripts/checkpatches.sh @@ -43,6 +43,7 @@ length=${DPDK_CHECKPATCH_LINE_LENGTH:-80} # override default Linux options options="--no-tree" +options="$options ${GIT_HOOK_OPTIONS}" options="$options --max-line-length=$length" options="$options --show-types" options="$options --ignore=LINUX_VERSION_CODE,FILE_PATH_CHANGES,\ diff --git a/scripts/git-hooks/deploy.sh b/scripts/git-hooks/deploy.sh new file mode 100755 index 0000000..070fb6e --- /dev/null +++ b/scripts/git-hooks/deploy.sh @@ -0,0 +1,20 @@ + +SELF=$(basename $0) + +if [ ! -f ${SELF} ]; then + echo "Please run script from folder where script is" + exit 1 +fi + +FILES=$(ls | grep -v ${SELF}) + +TARGET_FOLDER="../../.git/hooks" +SCRIPT_FOLDER="../../scripts/git-hooks" + +if [ ! -d ${TARGET_FOLDER} ]; then + exit 2 +fi + +for f in ${FILES}; do + ln -sf ${SCRIPT_FOLDER}/${f} ${TARGET_FOLDER}/${f} +done; diff --git a/scripts/git-hooks/post-commit b/scripts/git-hooks/post-commit new file mode 100755 index 0000000..2a76f96 --- /dev/null +++ b/scripts/git-hooks/post-commit @@ -0,0 +1,10 @@ +# +# Create docs after each commit +# + +if [ -n "$RTE_DOC_OUT" ]; then + OUT_CMD="O=${RTE_DOC_OUT}" +fi + +make ${OUT_CMD} doc-guides-html 2>&1 > /dev/null +make ${OUT_CMD} doc-api-html 2>&1 > /dev/null diff --git a/scripts/git-hooks/post-merge b/scripts/git-hooks/post-merge new file mode 120000 index 0000000..ace4560 --- /dev/null +++ b/scripts/git-hooks/post-merge @@ -0,0 +1 @@ +post-commit \ No newline at end of file diff --git a/scripts/git-hooks/pre-commit b/scripts/git-hooks/pre-commit new file mode 100755 index 0000000..c46b27d --- /dev/null +++ b/scripts/git-hooks/pre-commit @@ -0,0 +1,17 @@ +# +# Check patch with checkpatch script before commit +# +# If checkpatch fails, commit fails +# +# Relies on scripts/checkpathes.sh script as checkpatch.pl wrapper +# +# If "git commit" called with "--no-verify" option, pre-commit hooks +# bypassed and this script not called, checkpatch bypassed +# + +RTE_CHECKPATCH=$PWD/scripts/checkpatches.sh +PATCH=/tmp/dpdk-git-auto-checkpatch-$$.patch +export GIT_HOOK_OPTIONS=--no-signoff + +git diff --cached > ${PATCH} +exec ${RTE_CHECKPATCH} ${PATCH}