Практический способ зафиксировать изменения в системе управления версиями в нескольких ветках

Распространенный сценарий при использовании системы управления версиями - наличие ветки разработки вместе с ветвями выпуска с поддержкой версий. Мы используем CVS с HEAD в качестве ветки разработки и ветвью с именем, например, release-6-2 для текущего выпуска продукта.

Разработка новых функций идет только в ветку разработки, но исправления ошибок иногда необходимо проверять как в ветке разработки, так и в ветке текущего выпуска. Иногда это может быть довольно утомительно, поэтому я ищу практические способы сделать это.

Когда файл, который должен быть зафиксирован, синхронизирован в двух ветвях, я, в частности, ищу быстрое решение «фиксации в эти ветки».

(Мы используем CVS в качестве нашей системы управления версиями, поэтому любые ответы, относящиеся к CVS, хороши. Однако также интересно посмотреть, могут ли другие системы управления версиями предложить лучший способ. На стороне клиента мы используем Eclipse, поэтому решения Eclipse хорошо. Но если у вас есть решение, отличное от Eclipse, это тоже хорошо.)


person Ola Eldøy    schedule 01.01.2009    source источник


Ответы (2)


Примените исправление к самой старой требуемой ветке выпуска. Затем объедините изменение со следующей ветвью выпуска и так далее, пока не выполните слияние из ветки последней версии с HEAD.

Скажем, самая старая версия вашего продукта - 1.0, и у вас также есть выпуски 1.1 и 1.5. В HEAD добавляются новые функции для следующего выпуска. Если ошибка обнаружена в 1.0, вы применяете исправление к ветке 1.0. Слияние с 1.0 на ветку 1.1. Слияние от 1.1 с веткой 1.5 и, наконец, слияние с ветки 1.5 с HEAD.

Слияние от ветки к ветке лучше, чем применение исправления вручную к каждой ветке.

При использовании CVS вы должны вручную отслеживать, какие версии объединяются, чтобы вы не включали те же самые ревизии при следующем слиянии.

Если вы перейдете на Subversion, слияние из ветки в ветку станет проще. Инструмент Subversion Eclipse будет отслеживать, какие ревизии вы ранее объединили, что значительно упростит задачу выполнения повторных слияний между двумя ветвями.

Перейти на Subversion из CVS очень просто. Вы не первый, кто сделает такой шаг.

person ewalshe    schedule 01.01.2009

Как сказал авальше, лучше слить между ветками. Чтобы выбрать наиболее подходящее слияние, используйте метод, описанный в Pragmatic Version Control использование CVS очень хорошо:

В ветке - тег (PRE_FOO) перед изменением, внесите изменения и зафиксируйте, тег после изменения (POST_FOO). Затем в стволе слейте, используя теги:

cvs up -j PRE_FOO -j POST_FOO

Слияние между ветвями в SVN намного проще и безопаснее, и конвертировать всю историю CVS в SVN тривиально - см. cvs2svn . Вам следует использовать либо SVN 1.5, либо - с более ранними версиями SVN - svnmerge.

person orip    schedule 01.01.2009