В ветви возможностей Subversion требуются изменения из другой ветви функций - PullRequest
0 голосов
/ 06 октября 2009

У меня есть две ветви функций: featureA и featureB.

FeatureA завершена, но не объединена в транк, поскольку она еще не проверена, и мы еще не готовы ее протестировать.

Я работаю над FeatureB и понял, что для продолжения требуется изменение, реализованное в FeatureA.

Какой лучший подход? Я думаю, что у меня есть несколько вариантов:

Вариант 1

Слияние функции FeatureA с веткой featureB (или, может быть, просто конкретными ревизиями, если я буду осторожен, чтобы получить все, что я хочу), а затем вернем все, кроме необходимых мне изменений.

Вариант 2

Повторно внедрить изменения в featureB (на этот раз они не слишком сложны) и разобраться в конфликтах, когда featureA и featureB объединены в одном месте.

В любом случае функции будут объединены в ветку кандидата на выпуск, готовую для тестирования и развертывания. Как только эта ветвь RC будет подтверждена как проверенная, она будет объединена в транк за один раз.

Ответы [ 3 ]

3 голосов
/ 06 октября 2009

Есть третий вариант:

Вы можете выбрать то, что хотите объединить, и объединить только это. Выполните слияние от FeatureA до FeatureB, но объедините только те ревизии, которые вас интересуют. Затем при необходимости исправьте оставшиеся проблемы.

В Eclipse, например это может быть сделано довольно удобно, потому что диалог слияния позволит вам выбрать, какую ревизию (или какой диапазон) вы хотите объединить. Просто повторите это для всех диапазонов ревизий, которые вам нужны.

0 голосов
/ 07 октября 2009

Что ж, если две функции не связаны с изменениями в одних и тех же исходных файлах, самый простой способ сохранить их отдельно при продолжении разработки - создать смешанную рабочую копию. Изучите FeatureB и просто переключите отдельные исходные файлы на FeatureA при необходимости. (Посмотрите svn switch, если вам нужна дополнительная информация.) Вы можете продолжить вносить изменения в featureB и регистрировать их без фактического слияния какого-либо кода featureA. (Это позволило бы для локальной разработки, но нарушило бы сборку на сервере, если вы используете непрерывную интеграцию, потому что необходимая функция - изменения не будет.)

Конечно, если B зависит от A, это означает, что A в конечном итоге нужно будет проверить и подготовить к выпуску, прежде чем B можно будет завершить. Для меня это означает, что вы должны объединить изменения featureA в featureB и запустить dev на featureB. Вам просто нужно убедиться, что все исправления применены к FeatureA, что они объединены в FeatureB.

0 голосов
/ 06 октября 2009

Я решаю подобные проблемы, имея следующую структуру в SVN:

/prod
   /release_20090801
   /release_20090901
/staging
/trunk
/sandbox

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

Таким образом, в вашем сценарии компонент A может быть объединен с транком, а затем скопирован в изолированную программную среду для разработки компонента b.

...