Моя группа разработчиков использует шаблон нестабильного транка и стабильных веток в Subversion. Каждый месяц из ствола создается ветка стабильного выпуска. Иногда изменения должны быть объединены из этих ветвей выпуска в последующие ветви выпуска и в конечном итоге в ствол.
Проблема в том, что за последние несколько месяцев слияния были сделаны неправильно во всех этих ветвях. Многие ревизии были пропущены из-за неправильного понимания разработчиками того, какие ревизии им необходимы для объединения.
Пример неправильной истории слияния будет выглядеть так:
------------------------------------------------------------------------
r57 | Bob | 2008-11-27 04:02:46 -0600 (Thu, 27 Nov 2008) | 1 line
action:merge; origin:branches/1; target:branches/2; range:28-55
------------------------------------------------------------------------
r28 | Alice | 2008-11-25 10:14:00 -0600 (Tue, 25 Nov 2008) | 1 line
action:merge; origin:branches/1; target:branches/2; range:10-25
Здесь Боб должен был начать слияние с r25, где слияние Алисы закончилось, вместо r28.
Так что теперь у меня есть 6 веток, которые были объединены неправильно с начала октября таким образом. Это приводит к сбоям теста и множеству регрессий в магистрали. Итак, теперь я хочу вернуться и объединить все пропущенные изменения.
Существует ли простой и правильный способ сделать это? Мой текущий план - вернуться к началу и начать слияние в каждом разрыве. Поэтому в этом примере я бы слил ревизии 25-28 из ветви 1 в ветку 2. Но я ожидаю много конфликтов и надеюсь, что есть лучший способ.
Там действительно нет быстрого и легкого решения для этого. Принуждение разработчиков поддерживать несколько параллельных веток в Subversion подвержено ошибкам и отнимает много времени. В этом случае многие комментарии разработчиков о внесении изменений в любом случае являются неточными. Так что на самом деле нет никакого способа вернуться назад и проследить свои шаги. Вместо этого мы полностью протестируем самую последнюю ветку и закроем остальные.