odiszapc
@odiszapc

SVN и срочные изменения?

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

Деплой на продакшн идет версиями по нарастающей: несколько коммитов — деплой, несколько коммитов — деплой.


Но иногда возникают очень срочные задачи (исправление ошибок), которые надо задеплоить здесь и сейчас, при этом прогнав их через SVN. Как это сделать, не затрагивая основную версию разработки?


Использовать брэнчи? Как у вас это работает? При исправлении ошибки нужно чтобы эти изменения попадали и в основную ветвь тоже.
  • Вопрос задан
  • 3048 просмотров
Пригласить эксперта
Ответы на вопрос 5
@1nd1go
Ну и я повторю свой ответ: habrahabr.ru/qa/7149/#answer_30770

называется cherrypicking:
stackoverflow.com/questions/126320/subversion-cherry-picking
Ответ написан
Комментировать
Я думаю, что вам прекрасно подойдет логика GITа. Там на любую фичуру или мелочь (хотфикс) вы делаете ветвь. Тем образом вам бы подошёл вариант: хот-фикс = сделать ветвь из релиза, исправить ошибку, мердж в мастер(девел) и релиз. (Каждый называет рабочие названия ветвей по разному)
Ответ написан
sevka_fedoroff
@sevka_fedoroff
Вы имеете в виду, что у Вас в транке уже есть какие-то комиты, которые деплоить пока не надо, но вот эту вот срочную последнюю фичу надо закомитить?
Если Вы будете на каждую задачу делать ветку, а деплоить через таги, то у вас такой ситуации просто не возникнет. Грубо говоря, в транк идут комиты (мержи из веток) только перед созданием тага. Т.е. почти в любой момент времени у вас транк соответвует последнему тагу, развернутому на продакшене. Все девелоперы работают в ветках. Появилась срочная задача? Пожалуйста, делаем ветку и потом мержим ее втранк, делаем новый таг, деплой. Или даже так: нет времени на ветки, фиксим прямо в транке, новый таг, деплой.
Посмотрите, я тут недавно описывал свой воркфлоу, который вполне работает: habrahabr.ru/qa/7149/#answer_30727
Ответ написан
Tonik
@Tonik
Я не знаю насколько это подойдет в вашем случае с несколькими репозиториями, но у нас вполне успешно работает следующая схема.

1. Для каждого релиза создается тэг (фактически бранч) вида YYYYMMDD
2. Капистрана допилена так, что по умолчанию ищет и деплоит последний по дате тэг
3. В случае если ошибка нашлась на лайве, правим ее в транке и мерджим изменения в актуальный тэг

Для последнего пункта я накидал небольшой скрипт который принимает на вход номера ревизий для мерджа и дальше все делает сам. Циклы релизов у нас в районе недели, так в 99% проблем при мердже не возникает — код транка не успевает сильно изменится.
Ответ написан
Комментировать
@ComodoHacker
Для каждого деплоя делается бранч.

Для срочного исправления:
1) checkout бранча, который в продакшене
2) фиксим баг
3) commit
4) тестируем
[2-4 повторяем если нужно]
5) деплоим в прод.
5) мержим в trunk с визуальным контролем
6) commit
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы