Наша команда использует Eclipse для разработки программного продукта, и недавно мы перешли на Subversion для управления исходным кодом и управления версиями. Поначалу наша команда все еще работала непосредственно со стволом, так как мы были новичками в способе контроля версий в Subversion, и вещи нужно было по-прежнему извлекать.
В какой-то момент я сделал свою первую настоящую ветку из ствола, чтобы сделать разработку для конкретного проекта в нашем продукте. Предположим, что ветвь называется DEV_PROJ.
Позже, когда наша команда лучше знала, как работать с Subversion из Eclipse, я поместил команду в нашу первую реальную ветку разработки, не для конкретного подпроекта, а для отслеживания различных версий. Предположим, что ветка называется DEV_VERS. Сейчас мы работаем над этой веткой и больше не привязываемся к стволу. DEV_VERS был разветвлен от последней версии транка, и с тех пор не было никаких коммитов в транк.
Между двумя ветвями прошло около двух / трех месяцев, и было много изменений в стволе, прежде чем я сделал ветку версии. Теперь пришло время объединить изменения из DEV_PROJ с веткой DEV_VERS, чтобы включить проект в нашу новую ветку версий.
Сначала я произвел слияние последней версии транка с моей веткой DEV_PROJ (прямое слияние?), Думая, что это минимизирует разницу между двумя ветвями, сохраняя изменения, специфичные для проекта.
То, что я сейчас пытаюсь и у меня проблемы, это слияние DEV_PROJ с веткой DEV_VERS. Щелкните правой кнопкой мыши команду «Объединить / объединить мой проект DEV_VERS», чтобы начать объединение, можно выбрать одну из трех вкладок: «URL», «2 URL», «Реинтегрировать». Насколько я знаю, это не слияние реинтеграции, которое будет происходить от ветви к стволу, а не между ветвями, которые не связаны напрямую. Мне также не нужно объединять две ветви с моей веткой, поэтому я пропускаю вкладку 2 URL.
Так что я выбираю первый, URL. В качестве источника я беру свой проект из ветви DEV_PROJ, Редакции: Начать с копии, Глубина: Рабочая копия. Во второй попытке я также решил игнорировать родословную. При обеих попытках я нажимаю кнопку «Просмотр», чтобы получить представление о том, какие файлы являются целевыми для слияния.
Что я вижу, так это то, что есть много файлов, которые могут быть объединены, но они не были изменены в моей ветке DEV_PROJ. Таким образом, процесс слияния (subversion) видит гораздо больше кандидатов на слияние, чем я ожидал. Файлы, которые я добавил в ветку DEV_PROJ, отображаются как «Добавленные», но в обзоре слияния множество файлов, которые, как я знаю, я не изменил в этой ветке, отображаются как «Измененные» или «Конфликт дерева».
Мои вопросы:
- Это правильный способ слияния ветвей? Если нет, то нельзя ли это сделать напрямую с помощью меню слияния (URL, 2URL, Reintegrate)?
- Является ли мой первый шаг (прямая линия слияния в DEV_PROJ) причиной того, что есть кандидаты на слияние, которых там не должно было быть?
- Если нет прямого способа правильно объединить эти ветви, то я вижу только один вариант. То есть объединить DEV_PROJ со стволом (реинтегрировать), а затем объединить ствол с ветвью DEV_VERS (прямое объединение). Будет ли это правильный способ сделать это? Если так, то это единственный способ сделать это?
Затмение: Helios Service Release 2, сборка: 20110218-0911
SVN сервер: 1.6.15
Плагин Eclipse SVN: SVNKit 1.3.2 (2.2.2.I20100512-1900) // SVN Connector (2.2.2.I20100512-1900) // SVN Team Provider (0.7.9.I20100512-1900)