Слияние пропущенных изменений в Subversion - PullRequest
1 голос
/ 20 февраля 2009

Моя группа разработчиков использует шаблон нестабильного транка и стабильных веток в 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 подвержено ошибкам и отнимает много времени. В этом случае многие комментарии разработчиков о внесении изменений в любом случае являются неточными. Так что на самом деле нет никакого способа вернуться назад и проследить свои шаги. Вместо этого мы полностью протестируем самую последнюю ветку и закроем остальные.

Ответы [ 2 ]

1 голос
/ 20 февраля 2009

Если разработчики проверяли свои изменения в ветках по пути, не могли бы вы создать новую ветку до слияния, правильно слить изменения, а затем слить их новый код? Может быть, я что-то упустил.

Я не знаком с различными шаблонами Subversion, но моя компания следует процессу, в котором наша магистраль всегда стабильна, и разработчики не могут ее изменить (могут только изменять ветви). В результате у нас никогда не возникало проблем слияния, и у нас более 10000 ревизий и 100 веток в SVN. Я только поднимаю это, потому что кажется, что у вас есть серьезный недостаток в вашем процессе / шаблоне, если есть несколько разработчиков, имеющих проблемы слияния.

0 голосов
/ 06 августа 2009

Ну, чтобы получить все, что вы можете просто объединить в URL без конкретных ревизий. Как в:

cd /path/to/working/copy/of/stable/brunch
svn merge https://company.com/repo/project/branch/stable https://company.com/repo/project/trunk

Таким образом из ствола вы получите все, что забыли объединить в конюшню. Просмотрите, отмените то, что вам не нужно, и зафиксируйте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...