git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] pre-commit hook should ignore carriage returns at EOL
@ 2008-06-24 16:23 Christian Holtje
  2008-06-24 18:22 ` Alf Clement
  2008-06-24 18:26 ` Ian Hilt
  0 siblings, 2 replies; 21+ messages in thread
From: Christian Holtje @ 2008-06-24 16:23 UTC (permalink / raw)
  To: git; +Cc: gitster

When commit files that use DOS style CRLF end-of-lines, the pre-commit
hook would raise an error.  When combined with the fact that the hooks
get activated by default on windows, it makes life difficult for
people working with DOS files.

This patch causes the pre-commit hook to deal with crlf files
correctly.

Signed-off-by: Christian Höltje <docwhat@gmail.com>
---
  t/t7503-template-hook--pre-commit.sh |   75 +++++++++++++++++++++++++ 
+++++++++
  templates/hooks--pre-commit          |   10 ++++-
  2 files changed, 83 insertions(+), 2 deletions(-)
  create mode 100755 t/t7503-template-hook--pre-commit.sh

diff --git a/t/t7503-template-hook--pre-commit.sh b/t/t7503-template- 
hook--pre-commit.sh
new file mode 100755
index 0000000..8f0c3c9
--- /dev/null
+++ b/t/t7503-template-hook--pre-commit.sh
@@ -0,0 +1,75 @@
+#!/bin/sh
+#
+# Copyright (c) 2008 Christian Höltje
+#
+
+test_description='t7503 templates-hooks--pre-commit
+
+This test verifies that the pre-commit hook shipped with
+git by default works correctly.
+'
+
+. ./test-lib.sh
+
+test_expect_success 'verify that autocrlf is unset' '
+   if git config core.autocrlf
+   then
+     false
+   else
+     test $? -eq 1
+   fi
+'
+
+test_expect_success 'lf without hook' '
+
+	echo "foo" > lf.txt &&
+	git add lf.txt &&
+	git commit -m "lf without hook" lf.txt
+
+'
+
+test_expect_success 'crlf without hook' '
+
+	echo "foo\r" > crlf.txt &&
+	git add crlf.txt &&
+	git commit -m "crlf without hook" crlf.txt
+
+'
+
+# Set up the pre-commit hook.
+HOOKDIR="$(git rev-parse --git-dir)/hooks"
+mkdir -p "${HOOKDIR}"
+cp -r "${HOOKDIR}-disabled/pre-commit" "${HOOKDIR}/pre-commit"
+chmod +x "${HOOKDIR}/pre-commit"
+
+test_expect_success 'lf with hook' '
+
+	echo "bar" >> lf.txt &&
+	git add lf.txt &&
+	git commit -m "lf with hook" lf.txt
+
+'
+test_expect_success 'crlf with hook' '
+
+	echo "bar\r" >> crlf.txt &&
+	git add crlf.txt &&
+	git commit -m "crlf with hook" crlf.txt
+
+'
+
+test_expect_success 'lf with hook white-space failure' '
+
+	echo "bar " >> lf.txt &&
+	git add lf.txt &&
+	! git commit -m "lf with hook" lf.txt
+
+'
+test_expect_success 'crlf with hook white-space failure' '
+
+	echo "bar \r" >> crlf.txt &&
+	git add crlf.txt &&
+	! git commit -m "crlf with hook" crlf.txt
+
+'
+
+test_done
diff --git a/templates/hooks--pre-commit b/templates/hooks--pre-commit
index b25dce6..335ca09 100644
--- a/templates/hooks--pre-commit
+++ b/templates/hooks--pre-commit
@@ -55,8 +55,14 @@ perl -e '
  	if (s/^\+//) {
  	    $lineno++;
  	    chomp;
-	    if (/\s$/) {
-		bad_line("trailing whitespace", $_);
+	    if (/\r$/) {
+		if (/\s\r$/) {
+		    bad_line("trailing whitespace", $_);
+		}
+	    } else {
+		if (/\s$/) {
+		    bad_line("trailing whitespace", $_);
+		}
  	    }
  	    if (/^\s* \t/) {
  		bad_line("indent SP followed by a TAB", $_);
-- 
1.5.5.4

^ permalink raw reply related	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2008-06-26  7:30 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-06-24 16:23 [PATCH] pre-commit hook should ignore carriage returns at EOL Christian Holtje
2008-06-24 18:22 ` Alf Clement
2008-06-24 18:26 ` Ian Hilt
2008-06-24 19:05   ` Jakub Narebski
2008-06-24 19:54     ` Ian Hilt
2008-06-24 20:09       ` Jakub Narebski
2008-06-24 20:36         ` Ian Hilt
2008-06-24 19:16   ` Christian Holtje
2008-06-24 22:31     ` Junio C Hamano
2008-06-24 23:25       ` Christian Holtje
2008-06-24 23:34         ` Jakub Narebski
2008-06-24 23:39           ` Junio C Hamano
2008-06-25  0:19             ` Christian Holtje
2008-06-24 23:59         ` Junio C Hamano
2008-06-25  2:09           ` [PATCH] Ship sample hooks with .sample suffix Junio C Hamano
2008-06-25  2:48             ` Junio C Hamano
2008-06-25  6:51               ` Johannes Sixt
2008-06-25  8:09                 ` Junio C Hamano
2008-06-26  7:19               ` Johannes Sixt
2008-06-26  7:28                 ` Junio C Hamano
2008-06-25  5:18             ` Peter Baumann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).