Практический способ фиксации изменений в системе управления версиями в нескольких ветках.
-
03-07-2019 - |
Вопрос
Распространенный сценарий при использовании системы управления версиями — наличие ветки разработки вместе с ветками выпуска с поддержкой версий.Мы используем CVS с HEAD в качестве ветки разработки и веткой с именем, например.Release-6-2 для текущей версии продукта.
Разработка новых функций осуществляется только в ветке разработки, но исправления ошибок иногда приходится проверять как в ветке разработки, так и в ветке текущей версии.Иногда это может быть довольно утомительно, поэтому я ищу практические способы добиться этого.
Когда файл, который нужно зафиксировать, синхронизирован в двух ветвях, я, в частности, ищу быстрое решение «зафиксировать эти ветки».
(Мы используем CVS в качестве системы контроля версий, поэтому любые ответы, относящиеся к CVS, приветствуются.Однако также интересно посмотреть, могут ли другие системы контроля версий предложить лучший способ.На стороне клиента мы используем Eclipse, поэтому решения Eclipse хороши.Но если у вас есть решение, отличное от Eclipse, это тоже нормально.)
Решение
Примените исправление к самой старой требуемой ветке выпуска.Затем объедините изменение со следующей веткой выпуска и так далее, пока не объедините изменение из последней ветки выпуска с 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 очень просто.Вы не будете первым, кто сделал такой шаг.
Другие советы
Как сказал Авалше, лучше объединять ветки.Чтобы выбрать слияние, используйте метод, описанный в Прагматичный контроль версий с использованием CVS очень хорошо:
В ветке - тег(PRE_FOO
) перед изменением, внесите изменения и зафиксируйте, пометьте после изменения (POST_FOO
).Затем в багажнике выполните слияние с помощью тегов:
cvs up -j PRE_FOO -j POST_FOO
Слияние между ветвями в SVN намного проще и безопаснее, а преобразовать всю историю CVS в SVN очень просто — см. cvs2svn.Вам следует использовать либо SVN 1.5, либо – с более ранними версиями SVN – svnmerge.