Ветка SVN


Опция Branch создает для разработчиков еще одну линию. Эта опция очень полезна, когда кто-то хочет разделить процесс разработки на две разные линии.

Например, в проекте demo есть две команды, и в svn существует trunk-версия.

Из-за внезапных изменений в требованиях заказчика проект нуждается в серьезных доработках. В этот момент команда проекта решает, что Команда 1 продолжит исходную незаконченную работу (определенный модуль), а Команда 2 будет разрабатывать новые требования.

На этом этапе мы можем создать ветку для Команды 2. Ветка на самом деле представляет собой копию trunk-версии (основной линии), но ветка также обладает функциональностью контроля версий и независима от основной линии. Конечно, в конце мы можем использовать функцию (merge), чтобы слить ветку обратно в trunk, тем самым окончательно объединив все в один проект.

В локальной копии мы создаем веткуmy_branch.

root@example:~/svn/example01# ls
branches  tags  trunk
root@example:~/svn/example01# svn copy trunk/ branches/my_branch
A         branches/my_branch
root@example:~/svn/example01# 

Просмотреть статус:

root@example:~/svn/example01# svn status
A  +    branches/my_branch
A  +    branches/my_branch/HelloWorld.html
A  +    branches/my_branch/readme

Зафиксировать недавно добавленную ветку в репозитории.

root@example:~/svn/example01# svn commit -m "add my_branch" 
Adding         branches/my_branch
Replacing      branches/my_branch/HelloWorld.html
Adding         branches/my_branch/readme

Committed revision 9.

Далее мы разрабатываем в ветке my_branch, переключаемся на путь ветки и создаем файл index.html.

root@example:~/svn/example01# cd branches/my_branch/
root@example:~/svn/example01/branches/my_branch# ls
HelloWorld.html  index.html  readme

Добавить index.html в систему контроля версий и зафиксировать его в репозитории.

root@example:~/svn/example01/branches/my_branch# svn status
?       index.html
root@example:~/svn/example01/branches/my_branch# svn add index.html 
A         index.html
root@example:~/svn/example01/branches/my_branch# svn commit -m "add index.html"
Adding         index.html
Transmitting file data .
Committed revision 10.
Переключитесь на trunk, выполните svn update, а затем слейте ветку my_branch в trunk.
root@example:~/svn/example01/trunk# svn merge ../branches/my_branch/
--- Merging r10 into '.':
A    index.html
--- Recording mergeinfo for merge of r10 into '.':
 G   .

На этом этапе просмотрите каталог, и вы увидите, что файл index.html, созданный в ветке my_branch, был добавлен в trunk.

root@example:~/svn/example01/trunk# ll
total 16
drwxr-xr-x 2 root root 4096 Nov  7 03:52 ./
drwxr-xr-x 6 root root 4096 Jul 21 19:19 ../
-rw-r--r-- 1 root root   36 Nov  7 02:23 HelloWorld.html
-rw-r--r-- 1 root root    0 Nov  7 03:52 index.html
-rw-r--r-- 1 root root   22 Nov  7 03:06 readme

Зафиксируйте объединённый trunk в репозитории.

root@example:~/svn/example01/trunk# svn commit -m "add index.html"
Adding         index.html
Transmitting file data .
Committed revision 11.
Другие расширения