Несколько советов по объединению изменений обратно, если кто-то вносит изменения в ветку несколько раз (до 1.5): Помните, при какой ревизии вы сделали слияние ! Либо запишите номера ревизий куда-нибудь, или (что проще) сделайте тег . (Конечно, вы можете узнать это позже, но это ПИТА.)
Пример:
У вас есть макет хранилища, подобный этому:
/your_project
/trunk
/branches
/tags
Допустим, это веб-приложение, и вы запланировали сделать релиз. Вы должны создать тег и из этой (или из ствола) ветку, в которой вы исправляете ошибки:
/your_project
/trunk
/branches
/1.0.0-bugfixes
/tags
/1.0.0
Делая это таким образом, вы можете интегрировать новые функции в ствол. Все исправления будут происходить только внутри ветви исправлений, и перед каждым выпуском вы делаете тег текущей версии (теперь из ветви исправлений).
Предположим, вы исправили множество ошибок и выпустили их на рабочий сервер, и вам нужна одна из этих функций в текущем транке:
/your_project
/trunk
/branches
/1.0.0-bugfixes
/tags
/1.0.0
/1.0.1
/1.0.2
Теперь вы можете просто интегрировать изменения между 1.0.0 и 1.0.2 в ваш ствол (при условии, что вы находитесь в рабочей копии):
svn merge http://rep/your_project/tag/1.0.0 http://rep/your_project/tag/1.0.2 .
Это то, что вы должны помнить. Вы уже объединили изменения между 1.0.0 и 1.0.2 в стволе. Давайте предположим, что в текущем производственном выпуске больше изменений:
/your_project
/trunk
/branches
/1.0.0-bugfixes
/tags
/1.0.0
/1.0.1
/1.0.2
/1.0.3
/1.0.4
Теперь вы готовы выпустить новую версию из транка, но последние изменения ваших исправлений по-прежнему отсутствуют:
svn merge http://rep/your_project/tag/1.0.2 http://rep/your_project/tag/1.0.4 .
Теперь у вас есть все изменения, слитые в вашем стволе, и вы можете сделать свой выпуск (не забудьте сначала проверить его).
/your_project
/trunk
/branches
/1.0.0-bugfixes
/1.1.0-bugfixes
/tags
/1.0.0
/1.0.1
/1.0.2
/1.0.3
/1.0.4
/1.1.0