Over at Can you modify text files when committing to subversion? Grant suggested that I block commits instead.
However I don't know how to check a file ends with a newline. How can you detect that the file ends with a newline?
-
You should be able to do it via a SVN pre-commit hook.
See this example.
From Ben Scheirman -
You could use something like this as your pre-commit script:
#! /usr/bin/perl while (<>) { $last = $_; } if (! ($last =~ m/\n$/)) { print STDERR "File doesn't end with \\n!\n"; exit 1; }
From bstark -
Using only
bash
:x=`tail -n 1 your_textfile` if [ "$x" == "" ]; then echo "empty line"; fi
(Take care to copy the whitespaces correctly!)
@grom:
tail does not return an empty line
Damn. My test file didn't end on
\n
but on\n\n
. Apparentlyvim
can't create files that don't end on\n
(?). Anyway, as long as the “get last byte” option works, all's well.From Konrad Rudolph -
@Konrad: tail does not return an empty line. I made a file that has some text that doesn't end in newline and a file that does. Here is the output from tail:
$ cat test_no_newline.txt this file doesn't end in newline$ $ cat test_with_newline.txt this file ends in newline $
Though I found that tail has get last byte option. So I modified your script to:
#!/bin/sh c=`tail -c 1 $1` if [ "$c" != "" ]; then echo "no newline"; fi
From grom -
This answer worked well for me.
From nwahmaet -
Or even simpler:
#!/bin/sh test `tail -c 1 $1` && echo "no newline at eof: $1"
From felipec
0 comments:
Post a Comment