Просмотр исходного кода

Merge pull request #839 from Lectem/whitespacepolicy

Enforce the "no tab, use spaces" policy with a pre-commit hook.
Yuri Kunde Schlesner 11 лет назад
Родитель
Сommit
772ef097ea
2 измененных файлов с 31 добавлено и 0 удалено
  1. 7 0
      CMakeLists.txt
  2. 24 0
      hooks/pre-commit

+ 7 - 0
CMakeLists.txt

@@ -4,6 +4,13 @@ cmake_minimum_required(VERSION 2.8.11)
 
 
 project(citra)
 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)
 if (NOT MSVC)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wno-attributes -pthread")
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wno-attributes -pthread")
     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread")
     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread")

+ 24 - 0
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