Add a new hook to forbid new submodules
diff --git a/pre_commit_hooks/check_added_large_files.py b/pre_commit_hooks/check_added_large_files.py
index 03e88b8..b65c32a 100644
--- a/pre_commit_hooks/check_added_large_files.py
+++ b/pre_commit_hooks/check_added_large_files.py
@@ -6,7 +6,6 @@
import argparse
import math
import os
-import sys
from pre_commit_hooks.util import added_files
from pre_commit_hooks.util import CalledProcessError
@@ -49,8 +48,6 @@
def main(argv=None):
- argv = argv if argv is not None else sys.argv[1:]
-
parser = argparse.ArgumentParser()
parser.add_argument(
'filenames', nargs='*',
diff --git a/pre_commit_hooks/check_merge_conflict.py b/pre_commit_hooks/check_merge_conflict.py
index 4a98843..d986998 100644
--- a/pre_commit_hooks/check_merge_conflict.py
+++ b/pre_commit_hooks/check_merge_conflict.py
@@ -2,7 +2,6 @@
import argparse
import os.path
-import sys
CONFLICT_PATTERNS = [
b'<<<<<<< ',
@@ -41,5 +40,6 @@
return retcode
+
if __name__ == '__main__':
- sys.exit(detect_merge_conflict())
+ exit(detect_merge_conflict())
diff --git a/pre_commit_hooks/detect_aws_credentials.py b/pre_commit_hooks/detect_aws_credentials.py
index 4c51546..9dda217 100644
--- a/pre_commit_hooks/detect_aws_credentials.py
+++ b/pre_commit_hooks/detect_aws_credentials.py
@@ -67,5 +67,6 @@
else:
return 0
+
if __name__ == '__main__':
exit(main())
diff --git a/pre_commit_hooks/fix_encoding_pragma.py b/pre_commit_hooks/fix_encoding_pragma.py
index 5dcff93..3bf234e 100644
--- a/pre_commit_hooks/fix_encoding_pragma.py
+++ b/pre_commit_hooks/fix_encoding_pragma.py
@@ -138,5 +138,6 @@
return retv
+
if __name__ == "__main__":
exit(main())
diff --git a/pre_commit_hooks/forbid_new_submodules.py b/pre_commit_hooks/forbid_new_submodules.py
new file mode 100644
index 0000000..19f85d0
--- /dev/null
+++ b/pre_commit_hooks/forbid_new_submodules.py
@@ -0,0 +1,31 @@
+from __future__ import absolute_import
+from __future__ import unicode_literals
+
+from pre_commit_hooks.util import cmd_output
+
+
+def main(argv=None):
+ # `argv` is ignored, pre-commit will send us a list of files that we
+ # don't care about
+ added_diff = cmd_output(
+ 'git', 'diff', '--staged', '--diff-filter=A', '--raw',
+ )
+ retv = 0
+ for line in added_diff.splitlines():
+ metadata, filename = line.split('\t', 1)
+ new_mode = metadata.split(' ')[1]
+ if new_mode == '160000':
+ print('{}: new submodule introduced'.format(filename))
+ retv = 1
+
+ if retv:
+ print('This commit introduces new submodules.')
+ print('Did you unintentionally `git add .`?')
+ print('To fix: git rm {thesubmodule} # no trailing slash')
+ print('Also check .gitmodules')
+
+ return retv
+
+
+if __name__ == '__main__':
+ exit(main())