Як зазначав Майкл, запропонуйте стандартне рішення, засноване на версії / номери версій, з досить довгим терміном служби для вашої галузі (можливо, переплетене з однією або декількома коротшими строками проміжного періоду, якщо це має сенс для ваших типових клієнтів).
Дайте своїм клієнтам можливість взяти участь у цьому стандартному треку випуску, можливо, з пристойним терміном міграції.
Якщо вони наполягають на повноцінній стратегії підтримки філій, просто стягуйте їх відповідно, щоб належним чином покрити всі ваші додаткові витрати на надання такої повноцінної підтримки - це має сенс лише для бізнесу. Деякі клієнти мігруватимуть, щоб зменшити свої витрати (що допоможе вам зменшити кількість спеціальних відділень), деякі - не.
Змінна підтримка платежів, що поступово зростає з віком версій версій, з яких походять власні гілки, також може бути стимулом для клієнтів швидше переходити до нових гілок, допомагаючи швидше закрити старі спеціальні гілки. Це може допомогти зменшити кількість спеціальних відділень на кожного клієнта - якщо у вас є клієнти, які одночасно виконують кілька версій програмного забезпечення.
Переконайтеся, що ви не потрапляєте у пастку виконувати повне злиття гілок з / до будь-якої з гілок випуску (як стандартних, так і спеціальних), усі зміни до них повинні бути або окремо розробленими, або вишневими об'єднаними виправленнями.
Оскільки кожна з цих гілок поступово буде відходити одна від одної, кількість виправлень, які потребують налаштування / індивідуальної розробки, зростатиме експоненціально (звичайне злиття вишеньки не вдасться). Для цього потрібно врахувати вартість розробки.
Без жодної (значної) гілки злиття на зображенні ви можете (і я не можу наголосити на її важливості достатньо) будувати повністю автоматизовані конвеєри CI / CD для цих гілок, що супроводжуються хорошою системою відстеження / управління виправленнями, що забезпечує доставку виправлень просто рутина (або майже).