Arten von Versionierungsprogrammen
Zentrale Versionsverwaltung
Bei zentralen Versionsverwalungs-Programmen gibt es einen zentralen Server, auf dem die verschiedenen Versionen der Software gespeichert werden.
Die Enwickler*innen der Software können nach Anmeldung am Server verschiedene Versionen der Software herunterladen, um diese weiterzuentwickeln.
Ebenso können aber auch nicht an der Entwicklung beteiligte Nutzer*innen die neueste Entwicklerversion der Software herunterladen, um diese vorab zu testen oder um die neuesten Features der Software bereits vor deren offizieller Veröffentlichung nutzen zu können.
Die Gesamtheit der unterschiedlichen Versionen auf dem Server nennt man Repository.
Das Prinzip solcher zentraler Versionsverwaltungen ist relativ einfach zu verstehen. Dadurch ist zumindest deren Client-Version ebenfalls relativ einfach zu benutzen. Der Nachteil ist allerdings, dass man dazu natürlich auch einen zentralen Server installieren und warten muss, auf dem die Server-Variante der Software läuft. Im Vergleich zu der relativ einfachen Verwendung der Client-Version ist dies leider deutlich aufwendiger und komplexer.
Eine bekannte und weit verbreitete Software zur Versionsverwaltung ist die Freie Software svn (Apache Subversion), welche für GNU/Linux, macOS und auch für Windows als freie Software zur Verfügung steht. Wie bereits erwähnt, wird auch das vorliegende digitale Schulbuch inf-schule.de mit Hilfe eines zentralen svn-Servers entwickelt.
Eine früher weitverbreitete Versionsverwaltung war die ebenfalls Freie Software cvs (Concurrent Version System), welche allerdings nicht mehr weiterentwickelt wird und daher heute kaum noch eingesetzt wird.
Fachbegiffe
Client: Rechner der Enwickler*, Tester*, Nutzer*innen
auschecken (engl. check-out): Herunterladen einer bestimmten Version vom Server
einchecken (engl. check-in): Hochladen einer bestimmten Version auf den Server
zentrales Repository: Verzeichnis auf dem Server, welches alle Versionen enhält
Verteilte Versionsverwaltung
Im Gegensatz zur zentralen Versionsverwaltung wird bei der so genannten verteilten Versionsverwaltung das gesamte Repository zusätzlich zum zentralen Server als Kopie auch noch auf den lokalen Client-Rechnern vorgehalten.
Durch diese Architektur können die Entwickler*innen auch dann weiterarbeiten und zwischen verschiedenen Versionen hin- und herwechseln, wenn der zentrale Server einmal nicht erreichbar sein sollte.
Darüber hinaus lassen sich dezentrale Versionsverwaltungen aber auch ohne zentralen Server verwenden, wenn zum Beispiel gar keine Zusammenarbeit mit anderen Entwickler*innen gewünscht ist und lediglich eine lokale Versionsverwaltung durchgeführt werden soll.
Eine bekannte und weit verbreitete dezentrale Versionsverwaltung ist Software git, welche ursprünglich von Linus Torvalds zur verteilten Versionskontrolle des Linux-Kernels initiiert wurde. Git steht unter einer GPL-Lizenz, ist damit Freie Software und steht für die Betriebssysteme GNU/Linux, macOS und Windows kostenlos zur Verfügung. Die Herkunft des Namens "git" ist etwas unklar. Linus Torvalds selbst erklärt ihn cum grano salis wohl dadurch, dass er einfach alle seine Projekte nach sich selbst benenne, zuerst den "Linux"-Kernel - und in der Folge dann halt auch "git".
Im weiteren Verlauf dieses Kapitels wird die Funktionsweise und Benutzung von git genauer besprochen.