Ветвление и слияние должно быть довольно простым.
- Я чувствую себя очень комфортно, ветвление / слияние.
- Ветвление выполняется по разным причинам, в зависимости от модели процесса разработки /
Есть несколько разных моделей веток:
Вот один
Trunk
.
.
.
..
. ....
. ...
. ..Release1
.
.
...
. ....
. ...Release2
.
.
..
. ...
. ..
. ...Release3
.
.
Теперь вот любопытная вещь. Предположим, что Release1 нуждается в некотором исправлении ошибок. Теперь вам нужно ветку Release1 для разработки 1.1. Это нормально, потому что теперь вы можете разветвляться R1, выполнять свою работу, а затем сливаться обратно с R1, чтобы сформировать R1.1. Заметьте, как это держит различия между выпусками?
Другая модель ветвления состоит в том, чтобы вся разработка выполнялась на Транке, и каждый выпуск был помечен, но дальнейшая разработка для этого конкретного выпуска не производится. Ветви бывают для развития.
Trunk
.
.
.
.Release1
.
.
.
.
.Release2
.
.......
. ......
. ...DevVer1
. .
. .
. ...DevVer2
. ....
. ....
...
.Release3
.
Может быть одна или две другие основные модели ветвей, я не могу вспомнить их по макушке.
Суть в том, что ваша VCS должна поддерживать гибкое ветвление и слияние.
Отдельные системы VCS представляют большую боль IMO (RCS, Clearcase, CVS).
Говорят, что SVN тоже доставляет хлопоты, не знаю почему.
Mercurial отлично справляется здесь, как и (я думаю) git.