2009-07-09 3 views
1

Я использую Visual SVN в своей Windows Box.Использование svnversion с svn: keywords

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

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

Application Version $ApplicationVersion$, Framework Version $FrameworkVersion$ 

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

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

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

Спасибо!

ответ

4

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

+0

Мое приложение - это веб-приложение PHP. Таким образом, компиляция не производится. Если бы я использовал что-то вроде subwcrev, как я могу заставить его автоматически запускаться, когда он проверен? – EvilChookie

+0

Я не смог найти приемлемое решение. Либо решения не соответствуют моей ситуации (мой svn-сервер - это просто окно, в котором размещается VisualSVN. Вот и все), или варианты слишком сложны для реализации, поскольку это просто простая операция. – EvilChookie

+0

Тот факт, что вы используете сервер VisualSVN, на самом деле не имеет значения. svnversion - это просто клиентский инструмент и вообще не взаимодействует с сервером. Можете ли вы получить его (или subwcrev) для вывода информации о версии при ее вызове вручную в командной строке? –

Смежные вопросы