На работе же всё зависит от проекта: некоторые используют Git, остальные постепенно мигрируют с SVN на Git. Я сейчас работаю в команде, которая относится ко второму типу. По-этому я хочу рассказать о своем опыте мерджа из одной ветки в другую.
Нам понадобится Svnmerge.py и две ветки (например, http://svn.local/dev и http://svn.local/qa). Вторая ветка это копия первой, она была создана с помощью 'svn cp' и закомичена ревизией 12830.
Теперь предположим что у нас есть задача, реализацию которой мы запилили в dev-ветку. Список ревизий: 12834, 12839, 12845. Теперь нами стоит задача мерджа этих ревизий в qa-ветку.
1. Создаем папку и выполняем туда чекаут qa-ветки:
mkdir qa svn co http://svn.local/qa qa
2. После окончания чекаута нужно положить svnmerge.py в папку qa и сделать его исполняемым.
3. Заходим в папку qa и инициализируем dev-ветку. Эту единоразовая операция, ее не придется повторять в будущем:
svnmerge.py init -r1-12830 http://svn.local/dev svn ci -F svnmerge-commit-message.txt
12830 это ревизия, в которой была создана qa-ветка. Мы записали в свойства бранча информацию о том, что в нем находится код dev-ветки с 1й по 12830й ревизии. Теперь у нас не получится повторно вмерджить эти ревизии.
4. Собираем необходимые ревизии и проверяем их наличие в dev/qa ветках:
svnmerge.py avail -r12834,12839,12845 -Shttp://svn.local/dev
Если это ревизии dev-верки и они не были ранее вмерджены в qa-ветку, то мы получим список доступных ревизий:
12834,12839,12845
Если какая-то из ревизий отсутствует в списке, на это может быть 2 причины:
- Это не ревизия dev-ветки;
- Это ревизия dev-ветки, но она уже была вмерджена в qa-ветку.
5. Мы предполагаем что у нас все хорошо и выполняем команду для мерджа:
svnmerge.py merge -r12834,12839,12845 -Shttp://svn.local/dev # мердж svn st # проверяем изменения svn ci -F svnmerge-commit-message.txt # комитим результат
Как видите все не так просто как в Git, но и сложного ничего нет :)
Комментариев нет:
Отправить комментарий