Voraussetzung für ein verlässliches Versionsmanagement ist ein reproduzierbarer, Baurechner- und Personen-unabhängiger Bauprozess.
Dass das „Source Code Management“-System, in dem die Software-Komponenten abgelegt werden, auf einem regelmäßig ins Backup gesicherten Server liegen, versteht sich von selbst. Um jedoch eine wartbare Software mit reproduzierbaren Versionsständen zu erhalten, muss auch der Bauprozess standardisiert und reproduzierbar sein.
Neben den Sourcen gehören dazu auch Buildscripte, eine Toolchain, die spezifische Konfiguration sowie eine (virtualisierte) Bauumgebung. Das Target Image, das letztlich auf dem Embedded-Gerät laufen soll, kann nur dann reproduzierbar versioniert werden, wenn alle in den Bauprozess einfließenden Komponenten – Sourcen, Buildscripte, Toolchain, Konfiguration und Buildenvironment – ebenfalls versioniert sind.
Um gegebenenfalls auch Jahre später exakt das gleiche Image auf einem beliebigen Baurechner noch einmal bauen zu können – etwa um ein Paket-Update durchzuführen –, müssen alle genannten Eingangsparameter für die Software-Version versioniert mit abgelegt werden. Das ganze Set wird wieder „ausgepackt“, wenn erneut gebaut werden soll. Ändert sich nur einer dieser Parameter, entsteht eine neue Software-Version.