Wie lassen sich Produktversionen und Verzweigungen der Codebasis im Allgemeinen bei langfristigen Projekten, für die während des Produktlebenszyklus möglicherweise mehrere Releases vorliegen und die Unterstützung früherer Produkte erfordern, am besten handhaben?
Nehmen Sie genauer an, dass eine ordnungsgemäße verteilte Versionskontrolle vorhanden ist (z. B. Git) und dass die Teams klein bis groß sind und dass der Entwickler möglicherweise an mehreren Projekten gleichzeitig arbeitet. Das Hauptproblem ist, dass es eine vertragliche Verpflichtung gibt, alte Versionen zu unterstützen, wie sie zu der Zeit existierten, was bedeutet, dass Neuentwicklungen alten Code nicht patchen können (Microsoft Office-Produkte könnten ein Beispiel dafür sein, Sie erhalten nur Patches für das Spieljahr, das Sie besitzen).
Infolgedessen ist die aktuelle Produktversionierung ein bisschen kompliziert, da jedes Hauptprodukt mehrere Abhängigkeiten aufweist, von denen jede eine eigene Version hat, die sich zwischen den jährlichen Releases ändern kann. Während jedes Produkt über ein eigenes Repository verfügt, wird der größte Teil der Arbeit nicht auf dem Hauptquellstamm, sondern auf einem Zweig für die Produktfreigabe in diesem Jahr ausgeführt, wobei ein neuer Zweig erstellt wird, wenn das Produkt freigegeben wird, damit es unterstützt wird. Dies bedeutet wiederum, dass das Abrufen der Codebasis eines Produkts keine einfache Angelegenheit ist, wie man vielleicht bei der Verwendung der Versionskontrolle denkt.