Close

Was ist Versionskontrolle?

Die Versionskontrolle, auch bekannt als Quellcodekontrolle, ist ein Verfahren zur Verfolgung und Verwaltung von Änderungen an Softwarecode. Versionskontrollsysteme sind Softwaretools, mit deren Hilfe Softwareteams Änderungen am Quellcode im Zeitverlauf verwalten können. Da die Entwicklungsumgebungen immer schneller geworden sind, helfen Versionskontrollsysteme den Softwareteams, schneller und intelligenter zu arbeiten. Sie sind besonders nützlich für DevOps-Teams, da sie ihnen helfen, die Entwicklungszeit zu verkürzen und die Zahl erfolgreicher Deployments zu steigern.

Versionskontrollsoftware verfolgt jede Änderung am Code und speichert sie in einer speziellen Datenbank. Unterläuft Entwicklern ein Fehler, können sie einen Schritt zurückgehen und frühere Codeversionen vergleichen, um das Problem zu beheben, ohne Teammitglieder groß zu stören.


Der Quellcode ist das Herzstück nahezu jedes Softwareprojekts – eine extrem wertvolle Ressource, die es effektiv zu schützen gilt. Er enthält das gesamte Wissen über die Problemdomäne, das die Entwickler des Softwareteams in harter und gründlicher Arbeit gesammelt und verfeinert haben. Eine Versionskontrollsoftware schützt diesen Quellcode nicht nur vor den Folgen echter Katastrophenfälle, sondern auch vor einer schleichenden Verschlechterung durch menschliche Fehler und unbeabsichtigte Auswirkungen implementierter Änderungen.

Softwareentwickler, die in Teams arbeiten, schreiben ständig neuen Quellcode und ändern vorhandenen Quellcode. Der Code für ein Projekt, eine App oder Softwarekomponente ist normalerweise in einer Ordnerstruktur oder Strukturansicht organisiert. Ein Entwickler des Teams kann an einem neuen Feature arbeiten, während ein anderer Entwickler einen nicht damit zusammenhängenden Bug durch Änderung des Codes behebt. Jeder Entwickler hat die Möglichkeit, seine Änderungen an unterschiedlichen Stellen der Strukturansicht vorzunehmen.

Versionskontrolle ist eine effektive Lösung für diese Probleme. Jede Änderung jedes Entwicklers wird verfolgt. So werden Konflikte vermieden, selbst wenn mehrere Entwickler gleichzeitig an einem Projekt arbeiten. Änderungen an einem Teil der Software können inkompatibel sein mit Änderungen, die ein anderer Entwickler zeitgleich implementiert. Es muss geordnete Prozesse geben, um solche Inkompatibilitäten ohne Arbeitsunterbrechungen für das restliche Team identifizieren und beheben zu können. Und natürlich gilt für jedes Softwareentwicklungsprojekt: Jede Änderung kann neue Bugs mit sich bringen und neue Software ist erst zuverlässig, wenn sie getestet wurde. Tests und Entwicklung einer neuen Version laufen also parallel, bis sie bereit zur Veröffentlichung ist.

Git-Logo
Zugehöriges Material

Git-Merkzettel

Bitbucket-Logo
Lösung anzeigen

Git kennenlernen mit Bitbucket Cloud

Eine gute Versionskontrollsoftware ergänzt den Workflow eines Entwicklers optimal, zwingt ihm aber keinen bestimmten Arbeitsstil auf. Im Idealfall unterstützt sie jede Plattform und erfordert weder ein bestimmtes Betriebssystem noch eine bestimmte Toolkette. Ein exzellentes Versionskontrollsystem ermöglicht kontinuierliche und reibungslose Codeanpassungen ohne frustrierende und mühsame Dateisperrungen. Alle Entwickler eures Teams können parallel arbeiten; keiner muss auf den anderen warten.

Softwareteams, die keine Form von Versionskontrolle verwenden, haben häufig mit Problemen zu kämpfen. Sie wissen beispielsweise nicht, welche Änderungen den Benutzern verfügbar gemacht wurden, oder es wurden inkompatible Änderungen an unzusammenhängenden Aufgaben vorgenommen, die mit Mühe in Ordnung gebracht und überarbeitet werden müssen. Wenn du ein Entwickler bist, der noch eine Versionskontrolle verwendet hat, hast du vielleicht deinen Dateien Versionen hinzugefügt und etwa das Suffix "final" oder "aktuell" angehängt, um dann hinterher erneut an der neuen finalen Version zu arbeiten. Vielleicht hast du schon mal Codeblocks auskommentiert, weil du bestimmte Funktionen deaktivieren möchtest, ohne den Code zu löschen, den du später noch brauchen könntest. Die Versionskontrolle ist ein Weg, diese Probleme zu umgehen.

Versionskontrollsoftware ist heute ein essenzielles Tool im Arbeitsalltag jedes professionellen Softwareentwicklungsteams. Viele Softwareentwickler, die sich während Teamprojekten an ein leistungsfähiges Versionskontrollsystem gewöhnt haben, empfinden Versionskontrolle später auch bei eigenen kleineren Projekten als extrem nützlich. Sind die umfassenden Vorteile eines solchen Systems erst einmal ein fester Bestandteil ihres persönlichen Arbeitsstils geworden, möchten viele sie nicht mehr missen, auch nicht bei Projekten ohne Softwarebezug.

Vorteile von Versionskontrollsystemen


Die Verwendung von Versionskontrollsoftware ist eine Best Practice für leistungsstarke Software- und DevOps-Teams. Dank Versionskontrolle können Entwickler außerdem, schneller arbeiten. Softwareteams bleiben effizient und agil, auch wenn das Team wächst und neue Entwickler hinzukommen.

In den letzten Jahrzehnten haben sich die Versionskontrollsysteme (VCS, Version Control Systems) allgemein deutlich verbessert. Dennoch sind einige Systeme leistungsfähiger als andere. Gelegentlich werden VCS auch als SCM-Tools (Source Code Management, Quellcodeverwaltung) oder RCS (Revision Control Systems, Revisionskontrollsysteme) bezeichnet. Eines der derzeit beliebtesten VCS-Tools ist Git. Git ist ein verteiltes VCS und gehört damit zur Kategorie der DVCS ("D" vom englischen Begriff "distributed" für "verteilt"). Wie viele der heute am häufigsten verwendeten VCS-Systeme ist es kostenlos und quelloffen. Unabhängig von der Bezeichnung und dem gewählten System sind die Hauptvorteile der Versionskontrolle jedoch immer dieselben:

1. Ein umfassender, langfristiger Änderungsverlauf für jede Datei. Darin sind alle Änderungen enthalten, die im Verlaufe der Jahre von vielen Personen vorgenommen wurden. Zu den Änderungen zählen die Erstellung und Löschung von Dateien sowie die Bearbeitung ihrer Inhalte. Verschiedene VCS-Tools unterscheiden sich darin, wie einfach die Umbenennung und das Verschieben von Dateien ist. Dieser Verlauf sollte auch den Autor, das Datum und Notizen zum Zweck jeder Änderung enthalten. Wenn der vollständige Verlauf verfügbar ist, ist eine Rückkehr zu früheren Versionen möglich, um bei der Ursachenanalyse von Bugs zu helfen. Dies ist außerdem wichtig, wenn Probleme in älteren Softwareversionen behoben werden müssen. Wenn mit der Software aktiv gearbeitet wird, kann fast alles als "ältere Version" aufgefasst werden.

2. Branching und Merging. Dass Teammitglieder gleichzeitig an etwas arbeiten können, ist ja selbstverständlich. Aber auch Einzelpersonen können von der Möglichkeit profitieren, an unabhängigen Streams mit Änderungen zu arbeiten. Die Erstellung eines Branch in VCS-Tools hält mehrere Arbeitsströme voneinander getrennt und bietet die Möglichkeit, diese Arbeit wieder zu mergen. Dadurch können Entwickler sicherstellen, dass die Änderungen auf den einzelnen Branches keine Konflikte hervorrufen. Viele Softwareteams nutzen das Branching für jedes Feature oder auch Branching für jedes Release oder beides. Es gibt viele verschiedene Workflows, die den Teams zur Verfügung stehen, wenn sie Branching- und Merging-Einrichtungen in VCS nutzen möchten.

3. Nachverfolgbarkeit. Jede an der Software vorgenommene Änderung kann nachverfolgt und sowohl mit der verwendeten Projektmanagement-Software als auch mit Bugtracking-Software wie Jira verknüpft werden. Außerdem lässt sich jeder Änderung eine Nachricht hinzufügen, die den Änderungsgrund und den Änderungszweck dokumentiert. Das ist in mehrfacher Hinsicht nützlich, z. B. hilft es bei der Ursachenanalyse und anderen forensischen Untersuchungen. Darüber hinaus können Entwickler genau nachvollziehen, was der Code tut und mit welcher Absicht bestimmte Programmierentscheidungen getroffen wurden, wenn sie bei der Codelektüre einen kommentierten Codeverlauf zur Hand haben. So können sie sinnvolle, kompatible Änderungen implementieren, die mit den langfristigen Zielen für das Systemdesign übereinstimmen. Das ist insbesondere wichtig für eine effektive Arbeit mit Legacy-Code und unverzichtbar für Entwickler, wenn sie den zukünftigen Programmieraufwand annähernd akkurat abschätzen wollen.

Natürlich ist Softwareentwicklung ohne Versionskontrolle durchaus möglich. Eine solche Entscheidung bedeutet jedoch ein enormes Risiko für ein Projekt – ein Risiko, das ein professionelles Team nicht eingehen sollte. Die Frage ist also nicht, ob du und dein Team mit Versionskontrolle arbeiten sollen, sondern für welches Versionskontrollsystem ihr euch entscheiden solltet.

Auswahl gibt es genug, in diesem Rahmen konzentrieren wir uns aber nur auf ein System, nämlich Git. Erfahre mehr über die anderen Arten von Versionskontrollsoftware.


Diesen Artikel teilen
Nächstes Thema

Lesenswert

Füge diese Ressourcen deinen Lesezeichen hinzu, um mehr über DevOps-Teams und fortlaufende Updates zu DevOps bei Atlassian zu erfahren.

Mitarbeiter arbeiten mit unzähligen Tools zusammen

Bitbucket-Blog

Abbildung: DevOps

DevOps-Lernpfad

Demo Den: Feature-Demos mit Atlassian-Experten

So funktioniert Bitbucket Cloud mit Atlassian Open DevOps

Melde dich für unseren DevOps-Newsletter an

Thank you for signing up