Использование svnversion с ключевыми словами svn:
Я использую Visual SVN на моем Windows Box.
У меня есть репозиторий Application
, у которого есть Framework
как SVN: внешний. Все хорошо.
Когда я проверяю Application
Я хотел бы иметь версию Application
а также Framework
для включения в файл нижнего колонтитула. Таким образом, я мог бы получить что-то вроде:
Application Version $ApplicationVersion$, Framework Version $FrameworkVersion$
Обычно я понимаю, что могу использовать svn: ключевые слова и добавить ревизию, но, насколько я понимаю, svn: ключевые слова применяются для каждого файла отдельно. Несколько сайтов предложили использовать svnversion
производить вывод для каждой переменной, но я не совсем уверен, как это сделать.
Еще раз, на Windows Box, используя VisualSVN. Я также разрабатываю на Mac с использованием Versions.app, если он предоставляет более знакомый интерфейс для людей, чтобы ответить:)
Изменить - мое приложение является веб-приложением PHP. Таким образом, нет компиляции.
Спасибо!
1 ответ
Чтобы использовать svnversion, вам нужно интегрировать его в процесс сборки. Если вы запустите его на извлечении Subversion, он выведет строку вроде 73597:73598
с указанием версии вашего дерева (обратите внимание, что разные файлы могут иметь разные версии, плюс файлы могут также иметь локальные модификации). Вы положили что-то вроде
CFLAGS+=-DSVNVERSION="\"`svnversion`\""
в ваш Makefile, а затем положить
#define VERSION_STRING "Application version" SVNVERSION ", Framework version" FRAMEWORK_VERSION
в код. Если вы не используете Make или не можете с легкостью запустить процесс сборки командой, вывод которой выдает опцию командной строки компилятора, то вы также можете использовать утилиту subwcrev, которая поставляется с TortoiseSVN. Вы используете это в качестве шага перед сборкой, и он превращает некоторый файл с заполнителями в копию файла с заменой заполнителей на фактическую версию; тогда ваша компиляция скомпилирует и свяжет новый файл.
Редактировать: В случае с PHP, ревизия не может быть автоматически записана в файл при оформлении заказа или обновлении. Вместо этого вы можете запускать svnversion при каждом доступе к PHP, помещая его вывод в ответ HTML. Если это слишком дорого, вы можете кешировать результат svnversion в файл и восстанавливать файл только в том случае, если он старше одного часа (скажем), оставляя пользователю возможность не забыть удалить файл после обновления, чтобы он пересчитал его заново. кеш сразу.