Всем привет!
Разбираюсь в subversion. Концептуально все понятно. Но некоторые детали еще в голове не утряслись; особенно беда с каталогами и с merge. Пожалуйста, проверьте последовательность действий внизу: все ли верно?
Ситуация: изначальный проект загружают на сервер subversion (192.168.0.1), а потом Вася и Петя дорабатывают две фичи. Вот как я это понял:
1. Допустим есть проект prj. Для него создаем дерево и помещаем в нужное место файлы:
$ mkdir -p ~/work/prj/trunk
$ mkdir -p ~/work/prj/branches
$ cp -r ~/original_project_location/* ~/work/prj/trunk
Заносим проект в репозиторий:
$ cd ~/work/prj/
$ svn import http://192.168.0.1/repos/prj
-1-
У нас создалась версия 1.
Теперь Вася и Петя хотят добавить по фиче.
2. Они создают ветки:
vasya$ svn copy http://192.168.0.1/repos/prj/trunk http://192.168.0.1/repos/prj/branches/feature_v -m "Feature of Vasya"
Committed revision 2
petya$ svn copy http://192.168.0.1/repos/prj/trunk http://192.168.0.1/repos/prj/branches/feature_p -m "Feature of Petya"
Committed revision 3
r-2-
-1-|--
L-3-
vasya$ svn checkout http://192.168.0.1/repos/prj/branches/feature_v ./
petya$ svn checkout http://192.168.0.1/repos/prj/branches/feature_p ./
3. Дорабатывают их и коммитят:
vasya$ svn commit
Committed revision 4
petya$ svn commit
Committed revision 5
r-2-4-
-1-|-----
L-3-5-
4. Теперь админ (третье лицо, не-Вася и не-Петя) хочет слить все воедино.
$ mkdir ~/tmp
$ cd ~/tmp
$ svn checkout http://192.168.0.1/repos/prj/trunk #### Update
$ svn merge http://192.168.0.1/repos/prj/branches/feature_v
$ svn commit
Committed revision 6
$ svn delete http://192.168.0.1/repos/prj/branches/feature_v -m "Feature development is completed"
-1-|-----6-
L-3-5---
$ svn merge http://192.168.0.1/repos/prj/branches/feature_p
$ svn commit
Committed revision 7
$ svn delete http://192.168.0.1/repos/prj/branches/feature_p -m "Feature development is completed"
-1-|-----6-7-
Все правильно?
UPD: checkout перед merge