aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryalei wang <wylandrea@gmail.com>2018-08-01 08:44:23 +0000
committerGerrit Code Review <gerrit@fd.io>2018-08-01 08:44:23 +0000
commit0460a273eadbe35144c71ca131de32307a4dbb82 (patch)
tree6e7a2aae64b09950a9777c4af2fa5cd2ed10db47
parent3665809b3de73a3a61054a39e1260448df21f077 (diff)
parent8944a337eaaf3717b11e0e877c38bfec00d3b6bd (diff)
Merge "Fix: commit-msg hook conflicts with git-review"
-rw-r--r--CMakeLists.txt38
-rwxr-xr-xscripts/git/commit-msg-hook.py2
-rwxr-xr-xscripts/git/pre-commit14
3 files changed, 47 insertions, 7 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index adb0670..e63100f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -17,6 +17,11 @@
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.11)
PROJECT(nStack)
+
+option(RMWS "automatically remove trailing whitespace using git pre-commit hook" OFF)
+option(WITH_SECUREC_LIB "Option description" OFF)
+option(WITH_HAL_LIB "Option description" OFF)
+
SET(CMAKE_C_COMPILER "gcc")
SET(EXECUTABLE_PATH ${CMAKE_CURRENT_LIST_DIR}/release/bin)
SET(LIB_PATH_STATIC ${PROJECT_BINARY_DIR})
@@ -51,14 +56,35 @@ if(commit_template STREQUAL "")
message(STATUS "Setting git commit template...done")
endif()
-if(NOT EXISTS "${CMAKE_SOURCE_DIR}/.git/hooks/commit-msg")
- message(STATUS "Setting git commit hook...")
- execute_process(COMMAND ln -s ${CMAKE_SOURCE_DIR}/scripts/git/commit-msg-hook.py ${CMAKE_SOURCE_DIR}/.git/hooks/commit-msg)
- message(STATUS "Setting git commit hook...done")
+find_program(GIT_REVIEW git-review)
+if(NOT GIT_REVIEW)
+ if(NOT EXISTS "${CMAKE_SOURCE_DIR}/.git/hooks/commit-msg")
+ message(STATUS "git-review not found!")
+ message(STATUS "Setting git commit hook...")
+ execute_process(COMMAND ln -s ${CMAKE_SOURCE_DIR}/scripts/git/commit-msg-hook.py ${CMAKE_SOURCE_DIR}/.git/hooks/commit-msg)
+ message(STATUS "Setting git commit hook...done")
+ endif()
+else()
+ if(NOT EXISTS "${CMAKE_SOURCE_DIR}/.git/hooks/commit-msg")
+ execute_process(COMMAND git-review -s
+ RESULT_VARIABLE git_review_ret)
+ if(${git_review_ret} EQUAL 0)
+ file(APPEND ${CMAKE_SOURCE_DIR}/.git/hooks/commit-msg "${CMAKE_SOURCE_DIR}/scripts/git/commit-msg-hook.py $1")
+ endif()
+ else()
+ file(READ ${CMAKE_SOURCE_DIR}/.git/hooks/commit-msg contents)
+ string(FIND "${contents}" "commit-msg-hook.py" match_ret)
+ if(${match_ret} EQUAL -1)
+ file(APPEND ${CMAKE_SOURCE_DIR}/.git/hooks/commit-msg "${CMAKE_SOURCE_DIR}/scripts/git/commit-msg-hook.py $1")
+ endif()
+ endif()
endif()
-option(WITH_SECUREC_LIB "Option description" OFF)
-option(WITH_HAL_LIB "Option description" OFF)
+if(RMWS)
+ message(STATUS "Setting git pre-commit hook...")
+ execute_process(COMMAND ln -sf ${CMAKE_SOURCE_DIR}/scripts/git/pre-commit ${CMAKE_SOURCE_DIR}/.git/hooks/pre-commit)
+ message(STATUS "Setting git pre-commit hook...done")
+endif()
if(WITH_SECUREC_LIB)
add_definitions(-DSECUREC_LIB)
diff --git a/scripts/git/commit-msg-hook.py b/scripts/git/commit-msg-hook.py
index 719ff22..9c397ed 100755
--- a/scripts/git/commit-msg-hook.py
+++ b/scripts/git/commit-msg-hook.py
@@ -123,7 +123,7 @@ with open(sys.argv[1], 'r') as commit_msg:
for line in contents:
dup = line.lstrip()
- if dup.startswith('#'):
+ if dup.startswith('#') or dup.startswith("Change-Id") or dup.startswith("Signed-of-by"):
continue
if subject is True:
ret = check_subject(line)
diff --git a/scripts/git/pre-commit b/scripts/git/pre-commit
new file mode 100755
index 0000000..58cd14f
--- /dev/null
+++ b/scripts/git/pre-commit
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+if git rev-parse --verify HEAD >/dev/null 2>&1
+then
+ against=HEAD
+else
+ # Initial commit: diff against an empty tree object
+ against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
+fi
+
+# autoremove trailing whitespace
+for file in `git diff-index --check --cached $against -- | sed '/^[-+]/d' | sed -r 's/:[0-9]+:.*//' | uniq` ; do
+ sed -i 's/[ \t]*$//g' $file
+done