Я не смог найти пример того, как проверить свойство svn: eol-style для исходного кода непосредственно в скрипте ловушки перед фиксацией. Наиболее близким является check-mime-type.pl, который использует свойства mime-type, чтобы определить, является ли файл текстовым файлом.
Следующий скрипт, вставленный в файл скрипта предварительной фиксации, проверит, что для всех файлов .cpp / .h, добавленных в коммит, установлено свойство svn: eol-style. (Его можно легко расширить, чтобы проверить дополнительные расширения файлов). Он также будет предоставлять сообщения, указывающие, в каких файлах отсутствует свойство svn: eol-style.
REPOS="$1"
TXN="$2"
# Get new cpp/h files
ADDFILES=$(${SVNLOOK} changed "$REPOS" -t "$TXN" | sed -n -e '/^A.*\(\.cpp\|\.h\)$/s/^A *//p')
#echo "ADDFILES=$ADDFILES" >&2
# Check files for svn:eol-style property
ESMISSING=''
for f in ${ADDFILES}
do
if [[ "$(${SVNLOOK} pl ${REPOS} -t ${TXN} ${f})" != *svn:eol-style* ]]
then
# output to stderr to include message in svn commit ouput
echo "No svn:eol-style property set on file $f" >&2
ESMISSING=1
fi
done
if [[ -n "$ESMISSING" ]]
then
exit 1
fi