[SVN]: merge trunk into tag/branch
На работе, в проекте основным репозиторием является svn. Каждая версия выпускаемого продукта, т. е. выливаемая на продакшн сервера, отмечается тэгом в svn, вида <название_проекта_сокращенное>-версия, например PHP, тогда наша метка будет иметь вид PHP-1.0.21.
Бывают ситуации когда, вылились и через некоторое время надо срочно подлить что-то на продакшн, какое-то исправление бага или что-то еще, конечно это неправильно, но куда деваться. Естественно, что за тот период, пока был обнаружен баг, было некоторое кол-во коммитов и возможно логика работы в некоторых местах поменялась, дополнилась функционалом, который не был еще оттестирован отделом QA, в общем который выливать нельзя. А баг поправить надо, и это собственно и сделали одним из коммитов, внеся изменения в старый функционал. Чтобы безболезненно вылить это на продакшн и добавить в метку можно сделать следующее:
Начальные условия:
- слить транк проекта с последними изменениями, в консоли набрать svn up
- знать ревизию коммита, в котором были сделаны правки (для простоты восприятия пусть у нас это будет 100)
Если все это сделали, то можно приступать (можно все сделать на сливая на локаль проект, но на мой взгляд так проще и безопаснее).
- Сливаем на локаль версию тэга,
svn co http://path/to/project/tags/Tag /path/on/local/
Пример: svn co https://company.svn.com/php/tags/PHP-1.0.21/ /apps/php_tag/
- Переходим в папку, куда слили тэг
cd /apps/php_tag/
Набираемsvn merge -c 100 https://company.svn.com/php/trunk/
Вот собственно и все, svn смерджил только тот коммит, которым поправили баг, осталось только проверить внесенные изменения, запустивsvn diff
, а затем запустить тесты для проверки работоспособности кода и проекта с данными изменениями (но это оставляю на совесть тех кто будет мерджить)
После всех этих действий коммитим:
svn ci -m «Подливка на продакшн» <тут можно указать конкретные файлы>
, а можно конкретные файлы и не указывать и он закоммитит только те изменения, которые были внесены
Теперь на проекте спокойно можно обновляться из метки и быть уверенным, что баг исправлен и обновим мы только эти исправления, а не новый функционал
P.S. вот здесь достаточно хорошо написано как мерджить trunk с branch'ем. А вообще используйте книгу, она хоть и достаточно древняя, но основные вещи там описаны достаточно хорошо, ну и svn —help
вам в помощь