diff --git a/.hooks/pre-commit b/.hooks/pre-commit
new file mode 100755
index 0000000..3f0aa09
--- /dev/null
+++ b/.hooks/pre-commit
@@ -0,0 +1,94 @@
+#!/bin/bash -e
+
+echo "Running ${PWD}/$0"
+
+# Create a script that diffs a staged file vs. the original, and looks for illegal
+# tabs in new or modified lines
+script=$(mktemp /tmp/check.XXXXXX)
+trap "rm -f ${script}" EXIT
+cat >${script} <<"EOF"
+#!/bin/bash
+diff --old-line-format= --unchanged-line-format= "$1" "$2" | grep -q $'\t' || exit
+fn=$(basename "$2")
+[ "$2" != "${2%%.java}" ] || [ "$2" != "${2%%.py}" ] || exit
+echo "$2"
+EOF
+chmod +x ${script}
+
+# Run the script on all staged files
+badfiles=$(git difftool --staged -y -x ${script})
+
+if [ "${badfiles}" ]; then
+  echo "New or modified lines in the following files contain tab characters:"
+  echo "${badfiles}" | sed "s/^/  /"
+  echo "Please correct these problems and retry the commit."
+  exit 1
+fi
+
+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
+
+set +e
+# If you want to allow non-ascii filenames set this variable to true.
+allownonascii=$(git config hooks.allownonascii)
+# Redirect output to stderr.
+exec 1>&2
+
+# Cross platform projects tend to avoid non-ascii filenames; prevent
+# them from being added to the repository. We exploit the fact that the
+# printable range starts at the space character and ends with tilde.
+if [ "$allownonascii" != "true" ] &&
+	# Note that the use of brackets around a tr range is ok here, (it's
+	# even required, for portability to Solaris 10's /usr/bin/tr), since
+	# the square bracket bytes happen to fall in the designated range.
+	test $(git diff --cached --name-only --diff-filter=A -z $against |
+	  LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
+then
+	echo "Error: Attempt to add a non-ascii file name."
+	echo
+	echo "This can cause problems if you want to work"
+	echo "with people on other platforms."
+	echo
+	echo "To be portable it is advisable to rename the file ..."
+	echo
+	echo "If you know what you are doing you can disable this"
+	echo "check using:"
+	echo
+	echo "  git config hooks.allownonascii true"
+	echo
+	exit 1
+fi
+
+cfg_check_whitespace=$(git config hooks.checkwhitespace)
+
+if [ -e .git/MERGE_MSG ]; then
+    # this is a merge commit - default to no check
+    if [[ $cfg_check_whitespace == "true" ]]; then
+        check_whitespace=true
+    else
+        check_whitespace=false
+    fi
+else
+    # this is not merge commit - default to check
+    if [[ $cfg_check_whitespace != "false" ]]; then
+        check_whitespace=true
+    else
+        check_whitespace=false
+    fi
+fi
+
+if ! git diff --cached --name-only | grep -q -E '\.(java|c|h|yaml|yang|json|sh|xsl|py)$'; then
+    echo "No source files found in commit - skipping whitespace check"
+    check_whitespace=false
+fi
+
+if [[ $check_whitespace == "true" ]]; then
+    # If there are whitespace errors, print the offending file names and fail.
+    rv=0
+    exec git diff-index --check --cached $against
+fi
