Какие-либо рекомендации по развертыванию из SVN с автоматическим добавлением номеров версий в мой код?

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
6
0
1 131
8

Ответы 8

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

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

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

svn propset svn:keywords "Rev" file.txt

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

$Rev$

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

Обратите внимание, что этот метод помещает туда только ревизию file.txt, а не глобальную ревизию. См. Ссылку на книгу SVN Staale для подробностей.

Vegard Larsen 16.09.2008 10:02

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

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

If you enable SVN Keywords then every time you check in the project Subversion scans your files for certain "keywords" and replaces the keywords with some information.

For example, At the top of my source files I would create a header contain the following keywords:

'$Author:$
'$Id:$
'$Rev:$

When I check this file into Subversion these keywords are replaced with the following:

'$Author: paulbetteridge $
'$Id: myfile.vb 145 2008-07-16 15:24:29Z paulbetteridge $
'$Rev: 145 $

Я фанат капистрано для толчков. Обратитесь к здесь.

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

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

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

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

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

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

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

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

Метод, который я придумал для своих проектов 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 {} \;

Другие вопросы по теме