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 at intel.com> --- mk/rte.sdkinstall.mk | 6 +++++- scripts/checkpatches.sh | 4 ++++ scripts/git-hooks/deploy.sh | 16 ++++++++++++++++ scripts/git-hooks/post-commit | 14 ++++++++++++++ scripts/git-hooks/post-merge | 1 + scripts/git-hooks/pre-commit | 13 +++++++++++++ 6 files changed, 53 insertions(+), 1 deletion(-) 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/mk/rte.sdkinstall.mk b/mk/rte.sdkinstall.mk index c611d45..8e67c07 100644 --- a/mk/rte.sdkinstall.mk +++ b/mk/rte.sdkinstall.mk @@ -139,7 +139,11 @@ install-sdk: tar -xf - -C $(DESTDIR)$(includedir) --strip-components=1 \ --keep-newer-files --warning=no-ignore-newer $(Q)$(call rte_mkdir, $(DESTDIR)$(sdkdir)) - $(Q)cp -a $(RTE_SDK)/{mk,scripts} $(DESTDIR)$(sdkdir) + $(Q)cp -a $(RTE_SDK)/mk $(DESTDIR)$(sdkdir) + $(Q)$(call rte_mkdir, $(DESTDIR)$(sdkdir)/scripts) + $(Q)tar -chf - -C $(RTE_SDK) scripts --exclude git-hooks | \ + tar -xf - -C $(DESTDIR)$(sdkdir)/scripts --strip-components=1 \ + --keep-newer-files --warning=no-ignore-newer $(Q)$(call rte_mkdir, $(DESTDIR)$(targetdir)) $(Q)cp -a $O/.config $(DESTDIR)$(targetdir) $(Q)$(call rte_symlink, $(DESTDIR)$(includedir), $(DESTDIR)$(targetdir)/include) diff --git a/scripts/checkpatches.sh b/scripts/checkpatches.sh index afc611b..6e841ba 100755 --- a/scripts/checkpatches.sh +++ b/scripts/checkpatches.sh @@ -66,6 +66,10 @@ while getopts hqv ARG ; do done shift $(($OPTIND - 1)) +if [ -z "$@" ]; then + exec $DPDK_CHECKPATCH_PATH -q $options - +fi + status=0 for p in "$@" ; do ! $verbose || printf '\n### %s\n\n' "$p" diff --git a/scripts/git-hooks/deploy.sh b/scripts/git-hooks/deploy.sh new file mode 100755 index 0000000..6b0147d --- /dev/null +++ b/scripts/git-hooks/deploy.sh @@ -0,0 +1,16 @@ + +SELF=$(basename $0) + +cd $(dirname $0) +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..882b3c2 --- /dev/null +++ b/scripts/git-hooks/post-commit @@ -0,0 +1,14 @@ +# +# Create docs after each commit +# + +# Load config options: +# - DPDK_GITHOOK_DOC_OUT +. scripts/load-devel-config.sh +if [ -n "$DPDK_GITHOOK_DOC_OUT" ]; then + OUT_CMD="O=${DPDK_GITHOOK_DOC_OUT}" +fi + +echo "Generating documents ..." +make ${OUT_CMD} doc-guides-html > /dev/null +make ${OUT_CMD} doc-api-html > /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..f3d6be4 --- /dev/null +++ b/scripts/git-hooks/pre-commit @@ -0,0 +1,13 @@ +# +# Check patch with checkpatch script before commit +# +# If checkpatch fails, commit fails +# +# Relies on scripts/checkpathes.sh script as checkpatch.pl wrapper +# +# It is skipped with the option "--no-verify" of "git commit". +# + +RTE_CHECKPATCH=$PWD/scripts/checkpatches.sh + +exec git diff --cached | ${RTE_CHECKPATCH} -- 2.5.0