Так мы делаем, и у нас это хорошо работает ...
Project
|
+--01-Development
| |
| +--Release1.0
| | |
| | +--Solution Files
| |
| +--Release2.0
| |
| +--Solution Files
|
+--02-Integration
| |
| +--Release1.0
| | |
| | +--Solution Files
| |
| +--Release2.0
| |
| +--Solution Files
|
+--03-Staging
|
+--04-Production
ну, вы поняли ...
ПРИМЕЧАНИЕ: Это структура каталогов в Team Foundation Server. Ветви существуют только между 01-Development / Release1.0 и 02-Integration / Release1.0,
02-Интеграция / Выпуск 1.0 и 03-Подготовка / Выпуск 1.0,
03-Staging / Release1.0 и 04-Production / Release1.0
Другими словами, вы не сможете объединить 03-Staging / Release1.0 с 04-Production / Release2.0 и т. Д. ...
Для нас это то, что у нас есть 4 отдельные среды: Разработка, Интеграция (альфа-сервер), Стадия (бета-сервер), Производство.
Код начинается с разработки, начинается с разработки, а затем продвигается по мере тестирования QA (интеграция / альфа) и пользователями (этап / бета) и, наконец, в производство.
Функции / изменения собираются и группируются в выпуски, которые происходят каждые несколько месяцев.
Но предположим, что вы находитесь в разработке для Release2.0, и у вас возникла производственная проблема в Release1.0 ... Я легко могу получить последнюю версию Release1.0 и исправить проблему и продвинуть ее, не оказав никакого влияния на то, что я работали над выпуском 2.0
Не говорю, что это будет работать для всех в любой ситуации, но это работает очень хорошо для нас.