Pull to refresh

Работа с ветками в SVN. Изменения в версии 1.5.

Reading time2 min
Views11K
Продолжение этой статьи

Долгое время в ветках SVN был один существенный недостаток. Система не помнила мержей, и программисту приходилось самостоятельно заботиться о том, что бы сохранить номер ревизии, когда происходило копирование изменений из транка. Проблема частично решалась добавлением комментариев в лог, но все таки это было чревато ошибками, и целиком ложилось на совесть программиста.
В версии 1.5, наконец-то, программисты Subversion выполнили свое давнее обещание, и добавили несколько полезных фич для работы с ветками.
Итак, в версии 1.5 команда merge обзавелась двумя новыми опциями: --record-only и --reintegrate.
Теперь ответственность за контроль копирования изменений ложится целиком на плечи SVN (merge tracking), а программист может легко, и без боязни выполнять merge так часто, словно это команда update.

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

#svn merge svn://svnserver/var/bump/trunk

И SVN сам все поймет:

--- Merging r154 through r155 into '.':
U app/view/blogs/view.tpl.html


Второе полезное изменение связано с копированием ваших изменений в транк. И снова SVN великодушно заботится о нас, и сам копирует только те изменения, которых нет в транке.

svn merge --reintegrate svn://svnserver/var/bump/branches/my-branch

Эта команда объединит вашу ветку с транком. Снова никаких лишних движений, все очень просто.

Опция --record-only используется для того что бы пометить диапазон ревизий, как слитые. То есть в следующий раз svn не будет пытаться скопировать изменения из этих ревизий в вашу ветку.

#svn merge -r155:157 --record-only svn://svnserver/var/bump/trunk

Теперь все изменения из диапазона ревизий 155:157 будут проигнорированы.

Появилась допонительная опция у комманд svn log и svn blame
svn log --use-merge-history --limit 3
------------------------------------------------------------------------
r155 | rvk | 2008-11-24 15:22:04 +0300 (Пнд, 24 Ноя 2008) | 1 line
Merged via: r156

fixed small bug
------------------------------------------------------------------------
r154 | rvk | 2008-11-24 14:15:29 +0300 (Пнд, 24 Ноя 2008) | 1 line

new branch named new_design
------------------------------------------------------------------------

И еще одна полезная опция svn mergeinfo, с помощью которой можно посмотреть какие ревизии уже смержены:

#svn mergeinfo svn://svnserver/var/bump/trunk

Или какие изменения еще могут быть скопированы из транка:

#svn mergeinfo svn://svnserver/var/bump/trunk --show-revs eligible

Как всегда, подробнее, можно прочесть в svnbook
Tags:
Hubs:
+31
Comments123

Articles