svn commit: r313608 - in svnadmin/hooks: . scripts

Beat Gaetzi beat at FreeBSD.org
Thu Mar 7 20:31:55 UTC 2013


Author: beat
Date: Thu Mar  7 20:31:54 2013
New Revision: 313608
URL: http://svnweb.freebsd.org/changeset/ports/313608

Log:
  - Add hook to detect files with no newline at end of file
  - Remove trailing whitespaces in the pre-commit script
  
  Submitted by:	ak

Added:
  svnadmin/hooks/scripts/detect-nonewline-at-eof.sh   (contents, props changed)
Modified:
  svnadmin/hooks/pre-commit   (contents, props changed)

Modified: svnadmin/hooks/pre-commit
==============================================================================
--- svnadmin/hooks/pre-commit	Thu Mar  7 20:26:53 2013	(r313607)
+++ svnadmin/hooks/pre-commit	Thu Mar  7 20:31:54 2013	(r313608)
@@ -48,7 +48,7 @@
 # that subprograms fail to launch unless invoked via absolute path.
 # If you're having unexpected problems with a hook program, the
 # culprit may be unusual (or missing) environment variables.
-# 
+#
 # Here is an example hook script, for a Unix /bin/sh interpreter.
 # For more examples and pre-written hooks, see those in
 # the Subversion repository at
@@ -95,10 +95,13 @@ mergeinfo.sh "$REPO" "$TXN" || exit 1
 # check for merge debris
 detect-merge-conflicts.sh "$REPO" "$TXN" || exit 1
 
+# check for newline at end of file
+detect-nonewline-at-eof.sh "$REPO" "$TXN" || exit 1
+
 # check for upper/lowercase filename conflicts on clients
 case-insensitive.py "$REPO" "$TXN" || exit 1
 
-# fix log message.  
+# fix log message.
 log-police.py -t "$TXN" "$REPO" || exit 1
 
 # Nothing else, go ahead.

Added: svnadmin/hooks/scripts/detect-nonewline-at-eof.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ svnadmin/hooks/scripts/detect-nonewline-at-eof.sh	Thu Mar  7 20:31:54 2013	(r313608)
@@ -0,0 +1,32 @@
+#!/bin/sh
+#
+# $FreeBSD$
+
+# A pre-commit hook to detect files with no newline at end of file
+#
+
+REPO=$1
+TXN=$2
+
+SVNLOOK=/usr/local/bin/svnlook
+
+# Check arguments
+if [ -z "$REPO" -o -z "$TXN" ]; then
+  echo "Syntax: $0 path_to_repos txn_id" >&2
+  exit 1
+fi
+
+# We scan through the transaction diff, looking for
+# 'No newline at end of file' message. If we find one,
+# we abort the commit.
+SUSPICIOUS=$($SVNLOOK diff -t "$TXN" "$REPO" | \
+	grep '^\\ No newline at end of file' | wc -l)
+
+if [ $SUSPICIOUS -ne 0 ]; then
+  echo "Some files in your commit does not have newline at end" >&2
+  echo "of file. Please fix this and try committing again." >&2
+  exit 1
+fi
+
+# No files without newlines at last line detected, let it fly!
+exit 0


More information about the svn-ports-svnadmin mailing list