aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Yuri Kunde Schlesner <yuriks@yuriks.net>2015-06-21 14:21:02 -0700
committerGravatar Yuri Kunde Schlesner <yuriks@yuriks.net>2015-06-21 14:21:02 -0700
commit772ef097ead8d6be77cf00d753e8380fcac96710 (patch)
tree70e74daf5c9d3159550c36367959727b224c8bb5
parent741db6798c5d47dc70abd2ebc68c3dd71f172618 (diff)
parent499171ca64bcb32b0c2360daa505f84b62032d7a (diff)
Merge pull request #839 from Lectem/whitespacepolicy
Enforce the "no tab, use spaces" policy with a pre-commit hook.
-rw-r--r--CMakeLists.txt7
-rw-r--r--hooks/pre-commit24
2 files changed, 31 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 75f519a1..6805ebed 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,6 +4,13 @@ cmake_minimum_required(VERSION 2.8.11)
project(citra)
+if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git/hooks/pre-commit)
+ message(STATUS "Copying pre-commit hook")
+ file(COPY hooks/pre-commit
+ DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/.git/hooks
+ FILE_PERMISSIONS WORLD_EXECUTE )
+endif()
+
if (NOT MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wno-attributes -pthread")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread")
diff --git a/hooks/pre-commit b/hooks/pre-commit
new file mode 100644
index 00000000..bad84b14
--- /dev/null
+++ b/hooks/pre-commit
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+# Enforce citra's whitespace policy
+git config --local core.whitespace tab-in-indent,trailing-space
+
+# If there are whitespace errors, print the offending file names and fail.
+if ! git diff --cached --check; then
+ cat<<END;
+
+Error: This commit would contain trailing spaces or tabs, which is against this repo's policy.
+Please correct those issues before commiting. (Use 'git diff --check' for more details)
+If you know what you are doing, you can try 'git commit --no-verify' to bypass the check
+END
+ exit 1
+fi
+
+# Check for tabs, since tab-in-indent catches only those at the beginning of a line
+if git diff --cached | egrep '^\+.* '; then
+ cat<<END;
+Error: This commit would contain a tab, which is against this repo's policy.
+If you know what you are doing, you can try 'git commit --no-verify' to bypass the check.
+END
+ exit 1
+fi