Использование svnversion с ключевыми словами svn: - PullRequest
1 голос
/ 09 июля 2009

Я использую Visual SVN на моем Windows Box.

У меня есть репозиторий Application, который имеет Framework как svn: external. Все хорошо.

Когда я оформляю заказ на Application, я хотел бы иметь версии Application и Framework для включения в файл нижнего колонтитула. Таким образом, я мог бы получить что-то вроде:

Application Version $ApplicationVersion$, Framework Version $FrameworkVersion$

Обычно я понимаю, что могу использовать svn: ключевые слова и добавить ревизию, но, насколько я понимаю, svn: ключевые слова применяются для каждого файла отдельно. Несколько сайтов предложили использовать svnversion для получения выходных данных для каждой переменной, но я не совсем уверен, как это сделать.

Еще раз, на Windows Box, используя VisualSVN. Я также разрабатываю для Mac с использованием Versions.app, если он предоставляет более знакомый интерфейс для людей, чтобы ответить:)

Редактировать - мое приложение является веб-приложением PHP. Таким образом, компиляция отсутствует.

Спасибо!

1 Ответ

4 голосов
/ 09 июля 2009

Чтобы использовать 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 в файл и восстанавливать файл только в том случае, если он старше одного часа (скажем), оставляя пользователю возможность не забыть удалить файл после обновления, чтобы он пересчитал его заново. кеш сразу.

...