Как упоминал Майкл, предложите стандартное решение, основанное на версиях / номерах выпусков, с разумно долгим сроком службы для вашей отрасли (возможно, с чередованием с одной или несколькими промежуточными версиями с более коротким сроком службы, если это имеет смысл для ваших типичных клиентов).
Дайте своим клиентам возможность начать этот стандартный выпуск, возможно, с приличным сроком миграции.
Если они настаивают на полностью настраиваемой стратегии поддержки филиалов, просто взимайте с них соответствующую плату, чтобы должным образом покрыть все ваши дополнительные расходы, связанные с предложением такой полностью настраиваемой поддержки - это имеет смысл только для бизнеса. Некоторые клиенты будут мигрировать, чтобы сократить свои расходы (что поможет вам сократить количество пользовательских ветвей), а некоторые - нет.
Выставление счетов за переменную поддержку, постепенно увеличивающееся с возрастом версий выпуска, из которых происходят пользовательские ветви, также может стимулировать клиентов к более быстрому переходу на новые ветви, помогая быстрее закрывать старые пользовательские ветви. Это может помочь уменьшить количество пользовательских веток на клиента - если у вас есть клиенты, которые одновременно запускают несколько версий вашего программного обеспечения.
Убедитесь, что вы не попадете в ловушку полного слияния веток из / в любую из веток релиза (как стандартных, так и пользовательских), все изменения в них должны быть либо индивидуально разработаны, либо исправлены слитными исправлениями.
Поскольку каждая из этих ветвей будет постепенно отличаться друг от друга, количество исправлений, требующих индивидуальной настройки / индивидуальной разработки, будет расти в геометрической прогрессии (обычное слияние вишенек не удастся). Вы должны принять во внимание стоимость разработки для них.
Не имея (значительных) слияний ветвей на рисунке, вы можете (и я не могу не подчеркнуть его важность) построить полностью автоматизированные конвейеры CI / CD для этих ветвей, сопровождаемые хорошей системой отслеживания / управления исправлениями, обеспечивающей доставку исправлений просто рутина (или почти).