Versionskontrolle erklärt
Versionskontrollsysteme (VCS) ermöglichen es Teams den Quellcode ihrer Projekte zu sichern und zu archivieren. Das macht es einfacher, Bearbeitungen am Repository zu überprüfen oder durchzuführen oder im Fall eines Fehlers, der den Build zerstört, frühere Versionen wiederherzustellen.
Versionskontrolle ist der systematische Prozess für das Verfolgen und Verwalten von Aktualisierungen des Quellcodes und der Assets. Versionskontrollsysteme sind für effiziente Arbeitsabläufe von grundlegender Bedeutung, da sie für Programmierer, Grafiker und andere Teammitglieder als einzige verlässliche Informationsquelle fungieren und gleichzeitig jedem die Möglichkeit geben, unabhängig zu einer gemeinsamen Codebasis beizutragen. Sie dienen auch als Sicherheitsnetz, das es ermöglicht, Codeaktualisierungen rückgängig zu machen, falls während der Entwicklung ein katastrophaler Fehler auftreten sollte.
Faktoren wie die Größe eines Teams und die geografische Verteilung können beeinflussen, welche Versionskontrollsysteme ein Spieleentwickler einsetzen möchte. Einzelne Entwickler stellen möglicherweise fest, dass eine lokale Lösung ausreicht, um auf dem Laufenden zu bleiben, während größere Teams ein robustes und skalierbares Versionskontrollsystem verwenden sollten, das ihnen die Zusammenarbeit über Zeitzonen und geografische Grenzen hinweg erleichtert.
Die Versionskontrolle unterstützt auch die Fähigkeit, Verzweigungen zu erstellen. Eine Verzweigung ist eine einzelne Kopie von Code, die innerhalb eines VCS verwaltet wird. Durch das Erstellen von Verzweigungen können Entwickler und andere Teammitglieder unabhängig voneinander in separaten Streams arbeiten. Die Versionskontrolle hilft Entwicklern, kollaborativ und synchron in einer gemeinsamen Codebasis zu arbeiten.
Warum ist Versionskontrolle wichtig?
Versionskontrollsysteme sind eine zentrale Säule von DevOps, die es Teams ermöglichen, zusammenzuarbeiten und den Quellcode eines Projekts schnell zu iterieren.
Wer mit Versionskontrolle arbeitet, hat immer ein Backup. Einzelne Projektaktualisierungen werden in regelmäßigen Abständen zu einer einzelnen Gruppe, einem so genannten «Commit», zusammengefasst, bevor sie in den Hauptquellcode eingefügt werden. Eine Versionskontroll-Software ist unerlässlich, um alle Modifikationen an jeder Projektdatei nachzuverfolgen. Falls ein Fehler oder eine Softwareregression vorkommt, können die Anwender nahezu sofort zu einer früheren Version dieser Datei zurückkehren. Die Versionskontrolle bietet auch ein Verzeichnis, das alle Änderungen, wer die Änderungen vorgenommen hat und jede Iteration der jeweiligen Änderung enthält. Mit einem Versionskontrollsystem können alle Beteiligten und Teammitglieder nahtlos an vielen Dateien simultan arbeiten. Versionskontrollsysteme ermöglichen es Ihnen, alle Codebearbeitungen und -änderungen in einem zentralen Repository zusammenzufügen.
Durch den Zugriff auf einen vollständigen Projektverlauf und die Möglichkeit, Fehler rückgängig zu machen, vereinfachen Versionskontrollsysteme die Fehlerfindung und erleichtern die Wiederherstellung zuvor entfernter Funktionen.

Wie funktioniert die Versionskontrolle?
Das Erstellen eines neuen Repositorys in Ihrem Versionskontrollsystem öffnet den Hauptzweig: Dieser wird Hauptzweig oder Master-Stamm genannt. Der Master-Stamm ist, wo die Haupt-Codebasis in die Pipeline kommt, wo sie dann kompiliert und dem Endnutzer bereitgestellt wird.
Also was sind Verzweigungen? Verzweigung ist der Prozess, bei dem Code aus dem Master-Stamm herausgenommen wird. Dies erlaubt den Entwicklern, ihre eigenen Änderungen am Code vorzunehmen, ohne sie dem Haupt-Code hinzuzufügen. Verzweigungen zu nutzen, bedeutet, dass Entwickler nicht über den kompletten Dateiverlauf auf einem einzelnen Server verfügen müssen, stattdessen können sie einen vollständigen Projektverlauf der im Laufe der Zeit vorgenommenen Änderungen an ihrem Code pflegen. Das Versionskontrollsystem kann dann diese separaten Verzweigungen nehmen und sie im Hauptzweig wieder zusammenführen. Falls ein Entwickler nicht bereit ist, seine Aufgabenzweige im Haupt-Code zusammenzuführen, kann er seine Änderungen in eine separate Verzweigung überführen und sie zu einem Wunschzeitpunkt im Haupt-Code zusammenführen.
Eine angemessene Verzweigungsstrategie ist unerlässlich, um Code-Konflikte und defekte Builds zu vermeiden. Glücklicherweise ermöglichen gute Versionskontrollsysteme den Teams eine einfache Synchronisation mit dem Hauptzweig und die leichte Reparatur aller potentieller Code-Konflikte – sogar nachdem der Code dem Hauptintegrationszweig hinzugefügt wurde.
Dezentralisierte Versionskontrollsysteme erklärt
Mit dezentralisierten Versionskontrollsystemen können Sie einchecken, verzweigen und zusammenführen, ohne sich mit dem Hauptserver zu verbinden. Jeder Mitwirkende arbeitet mit einem geklonten Repository, das in der Cloud gespeichert ist. Ihr Hauptvorteil besteht darin, dass die Teammitglieder unabhängig voneinander und mit hoher Geschwindigkeit arbeiten können, ohne sich um langsame Netzwerke oder VPNs kümmern zu müssen. Es ist sogar möglich, offline an einem Projekt zu arbeiten, aber zum Pushen oder Pullen von Updates ist immer noch eine Internetverbindung erforderlich
Bei dezentralisierten Versionskontrollsystemen kann es zu langen Wartezeiten kommen, wenn Sie Ihren gesamten Projektverlauf herunterladen müssen, insbesondere bei großen Projekten mit umfangreichen Änderungsverläufen. Studios, die mit großen Binärdateien arbeiten, sollten die Speichernutzung sorgfältig überwachen, da diese Dateien schnell viel Platz beanspruchen können.
Studios, die Flexibilität und potenzielle Produktivitätssteigerungen anstreben, sollten eine dezentralisierte Versionskontrolle in Betracht ziehen.

Zentralisierte Versionskontrollsysteme erklärt
Zentralisierte Versionskontrollsysteme verwenden einen Check-in/Push-Workflow zur Verbindung mit dem Hauptserver. Jede Änderung oder Aktualisierung des Quellcodes wird automatisch als neue Version im Repository gespeichert. Zentralisierte Versionskontrollsysteme verfügen über leistungsstarke Funktionen zum Verzweigen und Zusammenführen, ohne dass das Repository auf mehrere Rechner geklont werden muss. In diesem Sinne ist es potenziell sicherer. Zentralisierte Versionskontrollsysteme erfordern eine Netzwerkverbindung. Da die Teams an eine einzige Version des Projekts gebunden sind, die auf einem Server gespeichert ist, können Serviceunterbrechungen zu erheblichen Verzögerungen führen. Ein weiterer Nachteil der zentralisierten Versionskontrolle ist, dass sie schlecht skalierbar ist. Je mehr Entwickler an Ihrem Projekt mitarbeiten, desto weniger Möglichkeiten gibt es, Änderungen in einer stabilen Umgebung voranzutreiben, was zu Problemen wie Merge-Konflikten führen kann. Wenn Sie an Versionskontrollsystemen interessiert sind, die einfach einzurichten und zu verwenden sind, können Sie einen zentralisierten Arbeitsablauf in Betracht ziehen.
Lokale Versionskontrollsysteme erklärt
Lokale Versionskontrollsysteme sind die einfachste Form der Versionskontrolle und werden hauptsächlich von einzelnen Entwicklern und nicht von Teams verwendet. Bei der lokalen Versionskontrolle werden alle Projektdaten auf einem einzigen Computer gespeichert, und Änderungen an Projektdateien werden als Patches gespeichert. Jeder Patch enthält nur die Aktualisierungen, die seit dem vorherigen Patch vorgenommen wurden. Wenn ein Problem mit einer bestimmten Version Ihres Projekts auftritt, müssen Sie die gesamte Sammlung von Patches untersuchen, um herauszufinden, wie die Projektdateien zu einem bestimmten Zeitpunkt aussahen, um das Problem zu diagnostizieren. Da sie an einen Computer gebunden sind, sind lokale Versionskontrollsysteme von Natur aus weniger flexibel als ihre dezentralisierten und zentralisierten Gegenstücke. Die Zusammenarbeit zwischen Teammitgliedern ist schwierig, und wenn die Datenbank beschädigt ist, kann es schwierig, wenn nicht gar unmöglich sein, die verlorenen Informationen wiederherzustellen. Im Allgemeinen ist es in Ordnung, mit lokaler Versionskontrolle zu beginnen, aber sobald Sie anfangen zu skalieren (schon von einem 1-Person-Team zu einem 2-Personen-Team), ist die Arbeit mit einer dezentralisierten oder zentralen Versionskontrolle besser.
Verwandte Themen
Erkunden Sie weitere Ressourcen, um mehr über Versionskontrollsysteme sowie andere DevOps-Tools und -Prozesse zu erfahren.
Agile vs. DevOps
Agile und DevOps verfolgen dieselben Ziele – Wertschöpfung für die Kunden mittels regelmäßiger Veröffentlichungen – sie unterscheiden sich aber etwas in der Herangehensweise. Erfahren Sie, wie beide Lösungen zusammen eingesetzt werden können.
DevOps-Grundsätze
Jedes Spielestudio sucht nach Möglichkeiten, die Produktion zu beschleunigen und gleichzeitig die Kosten zu reduzieren. DevOps bietet die beste Möglichkeit, beides zu erreichen. Lernen Sie zunächst die wichtigsten Grundsätze der DevOps-Methodologie kennen.
Vorteile von DevOps
Die Implementierung von DevOps-Verfahren optimiert die Entwicklungspipeline und steigert die Zufriedenheit des Teams und der Benutzer. Erfahren Sie mehr darüber, wie DevOps Sie unterstützen kann.