В общем смысле, для долгосрочных проектов, которые могут иметь несколько выпусков в течение жизненного цикла продуктов и требовать поддержки предыдущих продуктов, каков наилучший способ обработки версий продуктов и ветвления базы кода?
В более конкретном смысле, предположим, что имеется надлежащий распределенный контроль версий (т. Е. Git) и что команды имеют небольшие или большие размеры, и что разработчик может работать над несколькими проектами одновременно. Основная проблема, с которой сталкиваются, заключается в том, что существует контрактное обязательство поддерживать старые версии, поскольку они существовали в то время, что означает, что новая разработка не может исправлять старый код (например, продукты Microsoft Office могут быть получены только для год выпуска, которым вы владеете).
В результате текущее управление версиями продукта является сложным касанием, так как каждый основной продукт имеет несколько зависимостей, каждая из которых имеет свои собственные версии, которые могут изменяться между ежегодными выпусками. Аналогичным образом, хотя у каждого продукта есть свой собственный репозиторий, большая часть работы выполняется не над основной веткой исходного кода, а скорее над веткой для выпуска продукта тех лет, когда новая ветвь создается при выпуске продукта, чтобы его можно было поддерживать. Это, в свою очередь, означает, что получить кодовую базу продукта не так просто, как можно подумать при использовании контроля версий.