Главное меню
все форумы все темы форума добавить тему
Автоматическое изменение номера версии
Для реализации остальных пунктов можно, наконец, перенестись на серверную сторону.
Снова нас интересуют хуки. На этот раз нам нужен post-commit (то есть тот, который выполняется после окончания коммита).
Создаем для него bash скрипт
 
Bash

#!/bin/sh
 
# отсюда берем рабочий код
trunk=svn://localhost/repos/flex/trunk
# отсюда берем стабильную версию
stable=svn://localhost/repos/flex/tags/stable
# куда кладем итоговый архив
place=/var/www/storage/File
 
# удаляем временный каталог для экспорта, если таковой почему-то существует
rm -rf /tmp/svn
# создаем временный каталог для экспорта
mkdir --mode=0700 /tmp/svn
# экспортируем код из trunk ветки в подкаталог tmp/upload
svn export --force $trunk /tmp/svn/tmp/upload
# переходим в подкаталог tmp
cd /tmp/svn/tmp
# получаем из файлов номер версии
version=`grep -o '[0-9]\+\.[0-9]\+' ./upload/kernel/install/version.php`
# и номер ревизии
revision=`grep -o '[0-9]\+.1' ./upload/kernel/install/revision.php`
# так как номер ревизии представляет собой выражение,
# то делаем так, чтобы оно выполнилось
revision=$(($revision))
# а вот и наш номер версии
t_ver=$version'.'$revision
# создаем текстовый файл с номером версии в названии
touch 'version_'$t_ver'.txt'
# упаковываем все подготовленные файлы в архив
zip -r /tmp/svn/labcms_trunk_full.zip *
 
# проделываем аналогичные манипуляции для стабильной версии
...
 
# переносим полученные архивы на сайт
mv -f /tmp/svn/*.zip $place
# удаляем временный каталог
rm -rf /tmp/svn
exit 0
 

 
Готово, теперь у нас на сайте выложены актуальные версии кода, оформленные соответсвующим образом. Осталось дело за малым - надо обновить информацию о версии на странице загрузки. Страница загрузки хранится в БД и в кэше. Лезть в БД из консоли а потом оттуда же очищать кэш мне показалось не лучшей идеей. Поэтому был написан простенький модуль, который принимал в качестве параметров номера версий, вносил исправления в БД и сбрасывал кэш. Чтобы всякие шутники не баловались обновлением версий, обновление срабатывает только по паролю. Добавляем в конец скрипта вызов специальной страницы и передаем ей номера версий
 
Bash

...
wget -O /dev/null -q 'http://labcms.ru/secret/path/?trunk='$t_ver'&relese='$r_ver'&secret=password'
exit 0
 

 
Что из этого получилось, можно увидеть здесь.
Аналогичным образом можно было бы добавить размер файла или еще какую-нибудь бесполезную но, безусловно, занимательную информацию