Проверка синтаксиса
Чтобы я по ошибке не «сломал» сайт из-за опечатки, у меня проверяется синтаксис исходного кода при помощи скрипта hooks/pre-commit:
#!/bin/sh
ERROR=0
for FILE in `svnlook changed -t "$2" "$1" | awk '{print $2}'`
do
if [ `echo $FILE | sed s/html$/php/ | grep -e \\.php$` ]
then
OUTPUT=`svnlook cat -t "$2" "$1" "${FILE}" | php -l`
if [ $? -ne 0 ]
then
echo "$OUTPUT" | sed "s| -| $FILE|g" 1>&2
ERROR=1
fi
fi
done
exit $ERROR
Обновление сайта
Те файлы, к которым обращается Apache — это всего лишь одна из рабочих копий (правда, локальная). После фиксации изменений эта рабочая копия обновляется; для этого в репозитории есть скрипт hooks/post-commit:
#!/bin/sh cd /var/www/kastaneda.kiev.ua svn up svn log -v --xml --limit 20 | xsltproc svnlog.xslt - > svnlog.rss
Это довольно удобно — svn commit превращается в «публикацию».
Кроме того, в последней строчке происходит генерация RSS с историей изменений. Для этого применяется таблица стилей svnlog.xslt и консольный XSLT-процессор.