Рефакторинг и параллельное развитие веток - PullRequest
28 голосов
/ 28 октября 2008

Допустим, у вас есть несколько веток обслуживания для существующих выпусков вашего программного обеспечения. Некоторые разработчики вносят прямые изменения в ветки обслуживания и периодически объединяются в магистраль. Теперь идет обширный рефакторинг в коде магистрали, запланированный на предстоящий основной выпуск. Но это делает ветки обслуживания принципиально несовместимыми с кодом в транке, так как они могут зависеть, например, от кода, который больше не существует.

Как вы справляетесь с этой ситуацией на практике?

Ответы [ 14 ]

0 голосов
/ 27 февраля 2009

В нашем проекте мы в основном не исправляем изменения в ветвях поддержки версий. Если есть ошибка и

  1. это происходит как в магистрали, так и в основной ветви, мы фиксируем ее в магистрали и затем объединяем изменения с веткой обслуживания (что может произойти чисто, или потребовать дополнительной работы, и в этом случае мы решаем не лучше исправить ошибку только в новой версии).
  2. это только в ветке техобслуживания, возможно, в стволе есть какой-то король исправлений, и мы переходим к сценарию номер один.
0 голосов
/ 27 февраля 2009

Я думаю, что ваш лучший вариант - рефакторинг итеративный . Вместо того, чтобы выполнять весь рефакторинг за один раз в частной ветке, делайте это по одному этапу за раз. Сделайте несколько наборов изменений в ветке, а затем, когда вы знаете, что они стабильны, объедините их в ствол. Разработчики, работающие в других ветвях, будут нести ответственность за постоянное обновление своей ветки с помощью магистрали.

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

0 голосов
/ 27 февраля 2009

Вам нужно иметь , над которым работает много веток?

Работы над стволом начались только тогда, когда это было сделано, потому что в плане проекта говорилось, что текущий выпуск будет готов к отправке, поэтому он был отправлен?

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

У вас слишком много старых выпусков, потому что промежуток до следующего основного выпуска слишком велик?

Взимаете ли вы с клиентов, которые не будут обновляться больше, за обслуживание, поскольку это будет стоить вам дороже?

Ответ на комментарий:

Microsoft по-прежнему поддерживает Windows XP несмотря на то, что Vista отсутствует

Это очень верно, однако Microsoft по-прежнему не поддерживает Window XP SP1, хотя XP SP3 отсутствует.

Это не черно-белое изображение, даже если вы не можете перестать поддерживать старую версию, вы можете уменьшить количество поддерживаемых вами старых версий. Проблема в том, что отдел продаж / поддержки любит говорить «да», но разработка становится проблемой, поэтому вам нужно привлечь на свою сторону специалистов по продажам / поддержке.

0 голосов
/ 21 февраля 2009

Я могу только повторить то, что сказали другие, подчеркивая реальную боль в $$, которой могут стать очереди патчей.

Если у вас есть предопределенное (и железное) окно слияния, у вас должно быть всего две недели ада.

...