]> Cypherpunks repositories - gostls13.git/commitdiff
misc/git: add gofmt git pre-commit hook
authorAndrew Gerrand <adg@golang.org>
Thu, 15 Nov 2012 18:58:49 +0000 (19:58 +0100)
committerAndrew Gerrand <adg@golang.org>
Thu, 15 Nov 2012 18:58:49 +0000 (19:58 +0100)
R=golang-dev, bradfitz, ftrvxmtrx, franciscossouza, r, minux.ma
CC=golang-dev
https://golang.org/cl/6843044

misc/git/pre-commit [new file with mode: 0755]

diff --git a/misc/git/pre-commit b/misc/git/pre-commit
new file mode 100755 (executable)
index 0000000..18b7f83
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/sh
+# Copyright 2012 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+# git gofmt pre-commit hook
+#
+# To use, store as .git/hooks/pre-commit inside your repository and make sure
+# it has execute permissions.
+#
+# This script does not handle file names that contain spaces.
+
+gofiles=$(git diff --cached --name-only --diff-filter=ACM | grep '.go$')
+[ -z "$gofiles" ] && exit 0
+
+unformatted=$(gofmt -l $gofiles)
+[ -z "$unformatted" ] && exit 0
+
+# Some files are not gofmt'd. Print message and fail.
+
+echo >&2 "Go files must be formatted with gofmt. Please run:"
+for fn in $unformatted; do
+       echo >&2 "  gofmt -w $PWD/$fn"
+done
+
+exit 1