понедельник, 1 октября 2007 г.

Вывод ревизии subversion в приложениях Apex.

Как уже упоминалось ранее, зачастую приложение разворачивается на нескольких площадках. Соответственно, вполне логична ситуация, когда на двух и более площадках будут находиться различные версии одного и того же приложения. Поэтому достаточно часто в GUI выводят этот самый номер версии и, как правило, весь этот GUI распространяется по площадкам с помощью системы управлениями версиями Subversion.

Далее будет рассматриваться ситуация, когда приложение Oracle Application Express находится под управлением системы контроля версиями Subversion и стоит задача вывести в интерфейс номер svn-ревизии приложения.

Теория
Суть решения заключается в использовании одной из функциональностей Subversion - Keyword Substitution, которая позволяет при сохранении изменений выполнять замены ключевых слов. То есть, в файле, находящемся под управлением Subversion, может выводиться информация о дате или авторе изменения, о номере ревизии и т.д.).

Решение поставленной задачи состоит из нескольких этапов:


  1. Объявить строку замены (Substitution String) в apex-приложении

  2. Изменить шаблон приложения таким образом, чтобы использовалась новая строка подстановки

  3. Включить функциональность Keyword Substitution для файла приложения в Subversion


Практика. Определение строки замены
Для того чтобы определить свою собственную строку замены, необходимо перейти в "Shared Components -> Application -> Definition":


где перейти в раздел "Substitutions" и добавить новую строку замены, например SVN_REV (значение этой строки важно и изменять его не следует - "$Rev $". Это связано с особенностями работы Subversion - см. документацию по Subversion. Keyword Substitution):


Теперь, если посмотреть файл экспорта приложения (как это сделать описывалось ранее), то можно увидеть приблизительно такие строки (можно найти поиском по фразе "svn"):

p_substitution_string_01 => 'SVN_REV',
p_substitution_value_01 => '$Rev: $',

То есть, значение строки подстановки в файле экспорта лежит в открытом виде, которое можно изменять как угодно. Это нам пригодиться.

Практика. Изменение шаблона
Для того чтобы вывести номер версии в GUI, необходимо изменить шаблон, который отвечает за общий вид формы. Для чего необходимо перейти в "Shared Components -> User Interface -> Templates" и выбрать шаблон страницы:




После этого, необходимо прописать в шаблоне созданную ранее строку подстановки "SVN_REV", например так:


Теперь при работе приложения в нижнем левом углу будет следующая картина:


Практика. Включение Keyword Substitution
Основная часть работы уже сделана. осталась малость - включить функцию "Keyword Substitution" для файла, в котором располагается описание нашего приложения. Допустим, файл нашего приложения называется "apex_app.sql". Тогда включение будет выглядеть так:

drive:\path\to\svn\repository\svn propset svn:keywords "Date Revision Author" apex_app.sql

Вот и все. Теперь при каждом сохранении очередной версии файла apex-приложения будет вместо "$Rev $" прописываться актуальная версия файла в Subversion-репозитариии. То есть, в каждом файле приложения будет лежать строка подстановки с актуальной версией файла.
То есть, картинка в левом нижнем углу должна быть приблизительно такой:


Таким же образом можно выводить и последнего автора изменений или дату последнего сохранения в репозитарии.

ps: прошу прощения за столь значительную задержку в публикациях, ибо после сезона отпусков случился аврал :(, что отрицательно сказалось на количестве свободных минут.

Подробнее...