Любые рекомендации для развертывания из SVN, с номерами версий, записанными в мой код автоматически? - PullRequest
6 голосов
/ 16 сентября 2008

Мне стало комфортно с SVN, и теперь мне нужен способ более легкого развертывания кода на промежуточных или живых серверах. Я также хотел бы, чтобы какой-то метод помещал информацию о сборке в нижний колонтитул этого сайта, чтобы помочь в тестировании. Сайт PHP / MySQL.

Ответы [ 8 ]

4 голосов
/ 16 сентября 2008

Сначала включите подстановку ключевых слов для файла, в котором вы хотите получить информацию о редакции:

svn propset svn:keywords "Rev" file.txt

Добавление в файл, в котором вы хотите сохранить информацию о редакции:

$Rev$

Дополнительные сведения: http://svnbook.red -bean.com / ru / 1.4 / svn.advanced.props.special.keywords.html

3 голосов
/ 16 сентября 2008

Методы свойств дают вам только номер последней версии файла, в котором вы имеете свойство, а не заголовок версии всего хранилища (как нижний колонтитул переполнения стека). Если вы хотите этого, вам нужно использовать svnversion .

Я недавно начал использовать Capistrano в проекте, и он превосходный, очень гибкий и мощный. В итоге я довольно далеко отошел от обычного использования, но это делает развертывание одним щелчком намного проще.

2 голосов
/ 16 сентября 2008

Если вы хотите обновить номер версии в проекте AssemblyInfo.cs, вас может заинтересовать эта статья:

CodeProject: Используйте номера версий Subversion в ваших проектах Visual Studio

Если вы включите ключевые слова SVN, то каждый раз, когда вы регистрируетесь в проекте, Subversion сканирует ваши файлы на наличие определенных «ключевых слов» и заменяет ключевые слова некоторой информацией.

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

'$ Автор: $
«$ Id: $
«$ Rev: $

Когда я проверяю этот файл в Subversion, эти ключевые слова заменяются следующими:

'$ Автор: paulbetteridge $
'$ Id: myfile.vb 145 2008-07-16 15: 24: 29Z paulbetteridge $
$ Rev: 145 $

2 голосов
/ 16 сентября 2008

Скрипт для обновления SVN по мере необходимости.

SVN поддерживает ключевые слова. Вы можете добавить, какие ключевые слова вы хотите расширить, к свойству ключевых слов, и SVN будет расширяться. См. $ Id $ или $ Rev $ или ключевые слова, описанные в книге SVN.

1 голос
/ 16 сентября 2008

Я фанат использования capistrano для толчков. См. здесь .

Вы можете использовать свойство SVN $ Rev $ , чтобы получить номер ревизии в нижнем колонтитуле.

0 голосов
/ 26 сентября 2008

Метод, который я использовал для моих проектов php, может быть не самым лучшим, но через некоторое время поиск, безусловно, кажется, это проверка, запуск проверки версии, удаление папок .svn и двигаться дальше. Вот часть написанного мной сценария оболочки:

(во-первых, вам нужен скрипт проверки вашего репо)

# get the svn revision number and create a RELEASE file
svnvers=`svnversion .`
echo "version: $svnvers"
echo "<release><development>0</development><revision>$svnvers</revision></release>" > RELEASE

# remove all .svn directories
find . -name .svn -exec rm -rf {} \;
0 голосов
/ 16 сентября 2008

Материал ключевых слов потерпит неудачу во многих случаях - например, если вы изменили исходный код перед развертыванием или если вы регистрируетесь из одного каталога в вашем проекте, тогда другой каталог в том же проекте будет иметь разные номера ревизий. Внимательно проверяйте документы, чтобы убедиться, что ключевые слова делают то, что, по вашему мнению, они делают.

Лучший способ - использовать программу svnversion для генерации информации о ваших извлеченных каталогах во время компиляции или развертывания. Svnversion покажет информацию о версии ВСЕХ ваших каталогов, а также отметит, был ли источник изменен локально.

0 голосов
/ 16 сентября 2008

Очень простой способ справиться с этим - настроить приложение следующим образом:

Просто сделайте ваше приложение для развертывания рабочей копией вашего транка (svn co проект в корневой каталог / www), и вы запускаете svn up через консоль ssh (ssh user@host.com svn up /path/to/project), когда вам нужно выполнить обновление. Вы также можете выполнить откат с соответствующими механизмами оформления заказа. Это важно: если вы сделаете это, добавьте RewriteRules (или эквивалентный) в ваш .htaccess (или эквивалентный), чтобы запретить доступ к каталогам .svn . Если вы не можете выполнить вышеизложенное, вместо этого запустите svn export через ssh (так что это не будет «рабочая копия»), но это, естественно, будет медленнее, чем выполнение up.

Кроме того, вы можете посмотреть, что Ruby on Rails делает с Capistrano ... это та же базовая концепция, но она поддерживает резервное копирование транзакций, если обновление идет не так в середине, сохраняя каждую проверку в отдельной папке и символическую ссылку "последние" Ваш каталог / www.

...