Ветвь в самой высокой точке вашего дерева. То есть, должен включать код для всех ваших проектов, общих модулей ... и, вероятно, такие вещи, как документация / сценарии сборки / установщики / и т. Д. Зачем? Почему бы и нет! Ветви дешевы во всех упомянутых системах (SVN, TFS, Perforce, git).
Эта тактика особенно важна в системах, в которых используется ветвление "путь к пространству" (TFS, Perforce). В противном случае создание полного комплекта продуктов, совместимого с рабочими пространствами разных людей, станет кошмаром обслуживания.
Как только вы примените это на практике, вы можете изменять столько или меньше кода, как вам нравится в данной ветке. Вы всегда можете сделать полную сборку для проверки проблем интеграции; Возможность объединения любого компонента (-ов) между любым набором ветвей остается для вас открытой. Но вопрос стратегии SDLC полностью ортогональн. Вы можете ветвиться за функцию, за команду, за выпуск или любую комбинацию вышеупомянутого; Вы можете определить критерии прямой / обратной интеграции по своему усмотрению. * Тот факт, что каждая ветвь является надмножеством, доказывает преимущество во многих стратегиях и никогда не должно быть оправданием, если ваши инструменты отвечают требованиям.
* Выбор стратегии - это отдельный вопрос, который зависит от множества факторов. Другие предложили некоторые хорошо известные документы, которые помогут вам принять решение. Я поместил бы самую последнюю версию руководства Microsoft TFS вместе с лучшими из них.