Bieten Sie, wie Michael erwähnte, eine Standardlösung an, die auf Release-Versionen / -Nummern basiert und eine für Ihre Branche relativ lange Lebensdauer hat (möglicherweise verschachtelt mit einer oder mehreren Zwischenversionen mit kürzerer Lebensdauer, wenn dies für Ihre typischen Kunden sinnvoll ist).
Geben Sie Ihren Kunden die Möglichkeit, sich auf diesen Standard-Release-Track einzulassen, möglicherweise mit einer angemessenen Migrationsfrist.
Wenn sie auf einer vollständig benutzerdefinierten Strategie für den Filial-Support bestehen, berechnen Sie diese einfach entsprechend, um alle zusätzlichen Kosten für das Angebot eines solchen benutzerdefinierten Supports ordnungsgemäß zu decken. Dies ist nur wirtschaftlich sinnvoll. Einige Kunden werden migrieren, um ihre Kosten zu senken (wodurch Sie die Anzahl der benutzerdefinierten Filialen reduzieren können), andere nicht.
Die variable Support-Abrechnung, die mit dem Alter der Release-Versionen, aus denen die benutzerdefinierten Filialen stammen, zunehmend zunimmt, kann auch ein Anreiz für Kunden sein, schneller auf neuere Filialen zu migrieren und die älteren benutzerdefinierten Filialen schneller zu schließen. Dies kann dazu beitragen, die Anzahl der benutzerdefinierten Filialen pro Kunde zu verringern - wenn Sie Kunden haben, die gleichzeitig mehrere Versionen Ihrer Software ausführen.
Stellen Sie sicher, dass Sie nicht in die Falle geraten, vollständige Verzweigungszusammenführungen von / zu einem der Release-Zweige (sowohl Standard- als auch benutzerdefinierte) durchzuführen. Alle Änderungen an diesen sollten entweder individuell entwickelt oder von Kirschen ausgewählt und zusammengeführt werden.
Da sich jeder dieser Zweige allmählich voneinander unterscheidet, nimmt die Anzahl der Hotfixes, die angepasst / individuell entwickelt werden müssen, exponentiell zu (das Zusammenführen von einfachen Kirschpickeln schlägt fehl). Sie müssen die Entwicklungskosten für diese berücksichtigen.
Wenn im Bild keine (signifikanten) Zweigzusammenführungen vorhanden sind, können (und sollten, ich kann ihre Bedeutung nicht genug betonen) vollautomatische CI / CD-Pipelines für diese Zweige erstellt werden, zusammen mit einem guten Hotfix-Tracking / Management-System, das die Hotfix-Bereitstellung ermöglicht nur Routine (oder fast).