Releasezyklen von Softwareprodukten erleben einen Trend der Verkürzung, u. a. ermöglicht durch die Anwendung agiler Vorgehensweisen während des Softwareentwicklungsprozesses. Doch insbesondere bei industriellen Produkten, die nicht ausschließlich aus Software bestehen, steht dies im Widerspruch zu langen Produktlebenszyklen. Dies erfordert die parallele Entwicklung verschiedener Produktversionen.
Neben den endgültigen Releaseversionen müssen mitunter Zwischen-Releases der verschiedenen Softwareversionen an Lieferanten, Kunden oder interne Qualitätssicherung während der Entwicklung bereitgestellt werden. Darüber hinaus verpflichten langfristige Wartungsverträge dazu bereits ausgelieferte Versionen bei Bedarf zu pflegen. Um die genannten Anforderungen realisieren zu können bedarf es weniger einer technischen als vielmehr einer organisatorischen Erweiterung im Softwareentwicklungsprozess.
Die klassischen Branching-Konzepte bieten häufig nur eingeschränkte Möglichkeiten der parallelen Softwareentwicklung. In der Regel wird der Ansatz der Code Promotion für die Entwicklung einer einzelnen Softwareversion angewendet. Dabei erfolgt ab einem bestimmten Zeitpunkt (in der Regel nach einem stabilen Release bzw. RTM) die Weiterentwicklung der nächsten Version und es können die o. g. Anforderungen nur mit erheblichen Mehraufwand realisiert werden.
Der Artikel stellt ein Branching-Konzept vor, welches es ermöglicht theoretisch beliebig viele Versionen eines Softwareprodukts gleichzeitig und unabhängig voneinander zu entwickeln. Außerdem werden Feature-/Team-Branches unterstützt und es können jederzeit (Zwischen-) Releases und Bugfixes mit geringem Aufwand zur Verfügung gestellt werden.