From: Ferruh Yigit <ferruh.yigit@intel.com>
To: dev@dpdk.org
Subject: [dpdk-dev] [PATCH v2] scripts: add git hook scripts for checkpatch and auto doc generation
Date: Fri, 27 Nov 2015 14:34:57 +0000 [thread overview]
Message-ID: <1448634897-1193-1-git-send-email-ferruh.yigit@intel.com> (raw)
In-Reply-To: <1446160974-31675-1-git-send-email-ferruh.yigit@intel.com>
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 <dpdk>/.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 <ferruh.yigit@intel.com>
---
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}
--
2.5.0
next prev parent reply other threads:[~2015-11-27 14:35 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-29 23:22 [dpdk-dev] [PATCH] " Ferruh Yigit
2015-11-06 13:48 ` Ferruh Yigit
2015-11-06 13:48 ` Ferruh Yigit
2015-11-24 17:44 ` Thomas Monjalon
2015-11-24 18:04 ` Ferruh Yigit
2015-11-06 14:03 ` Ferruh Yigit
2015-11-27 14:34 ` Ferruh Yigit [this message]
2015-12-03 19:09 ` [dpdk-dev] [PATCH v2] " Thomas Monjalon
2015-12-07 13:32 ` Ferruh Yigit
2015-12-07 15:06 ` [dpdk-dev] [PATCH v3] " Ferruh Yigit
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1448634897-1193-1-git-send-email-ferruh.yigit@intel.com \
--to=ferruh.yigit@intel.com \
--cc=dev@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).