diff --git a/hack/README.md b/hack/README.md
new file mode 100644
index 0000000000..06cdd50854
--- /dev/null
+++ b/hack/README.md
@@ -0,0 +1 @@
+This directory contains material helpful for hacking on docker.
diff --git a/hack/fmt-check.hook b/hack/fmt-check.hook
new file mode 100644
index 0000000000..cd18a18bcb
--- /dev/null
+++ b/hack/fmt-check.hook
@@ -0,0 +1,46 @@
+#!/bin/sh
+
+# This pre-commit hook will abort if a committed file doesn't pass gofmt.
+# By Even Shaw <edsrzf@gmail.com>
+# http://github.com/edsrzf/gofmt-git-hook
+
+test_fmt() {
+    hash gofmt 2>&- || { echo >&2 "gofmt not in PATH."; exit 1; }
+    IFS='
+'
+    for file in `git diff --cached --name-only --diff-filter=ACM | grep '\.go$'`
+    do
+        output=`git cat-file -p :$file | gofmt -l 2>&1`
+        if test $? -ne 0
+        then
+            output=`echo "$output" | sed "s,<standard input>,$file,"`
+            syntaxerrors="${list}${output}\n"
+        elif test -n "$output"
+        then
+            list="${list}${file}\n"
+        fi
+    done
+    exitcode=0
+    if test -n "$syntaxerrors"
+    then
+        echo >&2 "gofmt found syntax errors:"
+        printf "$syntaxerrors"
+        exitcode=1
+    fi
+    if test -n "$list"
+    then
+        echo >&2 "gofmt needs to format these files (run gofmt -w and git add):"
+        printf "$list"
+        exitcode=1
+    fi
+    exit $exitcode
+}
+
+case "$1" in
+    --about )
+        echo "Check Go code formatting"
+        ;;
+    * )
+        test_fmt
+        ;;
+esac