$ svn co \ https://svn.local/svn/test/trunk
$ svn cp \ https://svn.local/svn/test/trunk \ https://svn.local/svn/test/branches/private_vnaum
Как любая операция, изменяющая репозитарий, эта потребует commit message. Будет запущен $EDITOR. Введите осмысленное сообщение. Пример: "Creating private branch private_vnaum for testing"
$ svn switch \ https://svn.local/svn/test/branches/private_vnaum
$ date > QQ $ svn add QQ A QQ
$ date >> ZZ
$ svn stat A QQ M ZZ
QQ - локально добавлен, ZZ - локально изменён.
$ svn diff Index: QQ =================================================================== --- QQ (revision 0) +++ QQ (revision 0) @@ -0,0 +1 @@ +Thu Jan 4 13:42:28 OMST 2007 ...
$ svn commit
$ date >> QQ
$ svn diff
$ svn revert -R .
Для этого проще всего сначала переключиться на ветку, с которой будем переносить изменения, а там воспользоваться svn log. Мы будем переносить с вашей приватной ветки, на которой сейчас и находимся.
Смотрим svn log:
$ svn log --stop-on-copy ------------------------------------------------------------------------ r7 | vnaum | 2007-01-04 14:13:19 +0600 (Thu, 04 Jan 2007) | 2 lines test edits ------------------------------------------------------------------------ r6 | vnaum | 2007-01-04 12:59:31 +0600 (Thu, 04 Jan 2007) | 1 line Creating private branch ------------------------------------------------------------------------
--stop-on-copy - это чрезвычайно полезная опция к svn log, которая покажет log только до момента создания вашей ветки.
Итак, видим, что наши изменения произошли с r6 до r7 (r6:7) на ветке https://svn.local/svn/test/branches/private_vnaum (Если вы вдуг забыли, с какой ветки ваша рабочая копия - к вашим услугам всегда svn info).
$ svn cp \ https://svn.local/svn/test/trunk \ https://svn.local/svn/test/branches/private_vnaum_merge_target
(Мы создаём её ещё раз как копию trunk - там нет никаких изменений).
$ svn switch \ https://svn.local/svn/test/branches/private_vnaum_merge_target D QQ U ZZ Updated to revision 10.
Забыли название ветки? Не беда! svn list покажет содержимое любого каталога в репозитарии:
$ svn list https://svn.local/svn/test/branches private_vnaum/ private_vnaum_merge_target/
Для этого нам надо знать две вещи: с какой ветки мы будем брать изменения (private_vnaum) и собственно changeset (с какой по какую версии). Изменения накатываются на рабочую копию.
$ svn merge \ -r 6:7 \ https://svn.local/svn/test/branches/private_vnaum A QQ U ZZ
Как видим, добавился новый файл, изменился имеющийся.
$ svn commit \ -m "Merged changeset 6:7 from private_vnaum (test changes)"
В commit message ОБЯЗАТЕЛЬНО укажите, какой changeset и откуда замержили!
Неплохо бы также вкратце рассказать, что это были за изменения.