Загалом, для довгострокових проектів, які можуть мати кілька випусків протягом життєвого циклу продуктів і потребують підтримки попередніх продуктів, який найкращий спосіб обробляти версії продукту та розгалуження бази коду?
У більш конкретному сенсі припустимо, що діє правильний розподілений варіант управління (тобто git) і що команди мають невеликі та великі розміри і що розробник може працювати над кількома проектами одночасно. Основна проблема, з якою стикається, полягає в тому, що існує договірне зобов'язання підтримувати старі версії, як вони існували в той час, а це означає, що нова розробка не може виправити старий код (продукти Microsoft Office можуть бути прикладом цього, ви отримуєте лише патчі для рік функції у вас є).
Як результат, поточна версія продукту - це дотик, що складається з дотиків, оскільки кожен основний продукт має декілька залежностей, кожна з яких має власні версії, які можуть змінюватися між щорічними випусками. Крім того, хоча кожен продукт має власне сховище, більша частина роботи виконується не на основному стовбурі джерела, а на гілці для тих років, що випускається продукт, коли новий випуск виробляється, коли продукт випускається, щоб він міг підтримуватися. Це в свою чергу означає, що отримати базу коду продукту - справа не проста, як можна подумати, використовуючи контроль версій.