Практичный способ фиксации изменений в системе контроля версий в нескольких ветвях. - PullRequest
7 голосов
/ 01 января 2009

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

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

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

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

Ответы [ 2 ]

9 голосов
/ 01 января 2009

Примените ваше исправление к самой старой требуемой ветке релиза. Затем объедините изменения со следующей веткой выпуска и т. Д., Пока вы не выполните слияние с последней ветки выпуска в ГОЛОВУ.

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

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

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

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

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

4 голосов
/ 01 января 2009

Как сказал awalshe, лучше объединяться между ветвями. Чтобы выбрать слияние, метод, описанный в 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 .

...