Прошлое
Я разрабатываю программный проект, используя Subversion как scm. До сих пор разработка всегда происходила в trunk
, поэтому проблемы возникали, когда требовалось исправление ошибок. Теперь мы хотим переосмыслить нашу стратегию ветвления, и требование следующее: мы хотим иметь возможность работать над несколькими будущими выпусками одновременно.
Задание
Это означает: предположим, что текущая версия, над которой мы работаем, - 1.0. Следующая запланированная версия - 2.0, следующая за ней - 3.0. Теперь, когда мы выпустили 1.0, мы хотим
- поддерживать версию 1.0
- разработать функции для 2.0
- в то же время разрабатывать функции для 3.0
Конечно, исправления, которые были применены в 1.0, также необходимы и в двух других версиях. Кроме того, функции из версии 2.0 также должны быть в версии 3.0. Кроме того, вполне возможно, что планируется выпуск второстепенного выпуска, скажем, 1.1, который также включает новые функции и должен будет поддерживаться отдельно.
Возможное решение
Я придумал следующую стратегию ветвления:
- Багажник будет заброшен
- Для каждого нового запланированного выпуска создается ветка, основанная на ветке последнего выпуска.
- Изменения распространяются «вверх» на шкале времени версии.
Позвольте мне уточнить это немного подробнее: в данном примере мы будем ветвить версию 1.0 от ствола. Кроме того, мы должны отделить версию 2.0 от версии 1.0 и версию 3.0 от версии 2.0. Когда в 1.0 вносятся изменения, они будут объединены с 2.0, а затем и с 3.0.
Вопрос
Это действующая методология? Будет ли работать технически? Есть ли организационные ошибки? Есть ли лучшие практики? (Все, что может придумать Интернет, это: «Разрабатывать в основной ветке, поддерживать в ветке выпуска»). Мне особенно странно бросать багажник - это не так?