Abstrakte blau-weiße Verzweigungsmuster, die an Flussläufe oder Adern in einer strukturierten Landschaft erinnern.

Was ist Quellcode-Verwaltung?

Quellcode-Verwaltung definiert

Die Quellcode-Verwaltung umfasst Praktiken, Prozesse und Tools zur Kontrolle, Verwaltung und Nachverfolgung von Änderungen an einer Codebasis im Laufe der Zeit. Auch als SCM bezeichnet, dient sie als endgültige Wahrheitsquelle für Softwareentwicklungsteams und andere Stakeholder, darunter DevOps Teams, QA- oder Testingenieure, Sicherheitsspezialisten und technische Redakteure.

Mit dem Wachstum von Softwareprojekten und -produkten kann auch der zugehörige Quellcode komplex und unübersichtlich werden. SCM hilft dabei, diese Komplexität und Unhandlichkeit in ein besser handhabbares System zu verwandeln, was zu mehr Agilität und Skalierbarkeit führt.

Kernfunktionen der Quellcode-Verwaltung

Die Quellcode-Verwaltung besteht aus folgenden Hauptfunktionen:

  • Repository

  • Versionssteuerung

  • Verzweigung

  • Commits

  • Zusammenführung

Repository

Ein Repository, auch Repo genannt, beherbergt den Quellcode eines Projekts und weitere zugehörige Artefakte wie Build-Skripte, Konfigurationsdateien, Datenbankskripte, Dokumentation, Integrationstests und Unit-Tests. Man kann sich Repositories als organisierte Speicherorte oder Lagerhallen für Softwareprodukte vorstellen.

Dieses gemeinsame, zentrale Repository kann On-Prem oder in der Cloud gehostet werden. Private Repos werden meist für Closed-Source- oder proprietäre Software verwendet, während Open-Source-Software öffentliche Repos verwendet.

Softwareentwicklungsteams können zwischen zwei primären Repository-Architekturen wählen:

  • Monorepo: Ein Monorepo enthält mehrere Projekte in einem einzigen Repository. Dies gilt im Allgemeinen für eng gekoppelte Komponenten.

  • Polyrepo: Polyrepos verwalten Projekte in eigenen, separaten Repositories. Diese Architektur wird häufig für lose gekoppelte Komponenten wie Microservices verwendet.

Versionssteuerung

Die Versionssteuerung ermöglicht es Teams, den Verlauf der Codebasis zu verwalten. Sie verfolgt verschiedene Versionen von Quellcode und Artefakten, sodass Änderungen nachvollzogen werden können und nicht dauerhaft verloren gehen. Entwickler können den aktuellen Quellcode mit dem Versionsverlauf vergleichen, bei Bedarf zu früheren Versionen zurückkehren und beim Debugging helfen. Dieser Versionsverlauf bildet auch die Grundlage für Release Notes, die zusammen mit Softwarestarts oder Updates veröffentlicht werden.

Verzweigung

Eine Verzweigung ist eine separate Kopie des Quellcode-Repositorys, die ausgecheckt und in die lokale Umgebung eines Entwicklers geklont werden kann. Ein Repository kann in verschiedene Verzweigungen aufgeteilt und Änderungen an einer Verzweigung vorgenommen werden, ohne das zentrale Repository zu beeinträchtigen. Mithilfe von Verzweigungen können Teammitglieder verschiedene Teile der Codebasis gleichzeitig bearbeiten, was die parallele Entwicklung erleichtert.

Eine Hauptverzweigung fungiert als „Stamm“, von dem alle Verzweigungen ausgehen und in den sie wieder zusammenlaufen. Sie enthält die neueste stabile Version oder die produktionsfertige Version des Codes.

Softwareentwicklungsteams können eine Verzweigungsstrategie anwenden, die ihren Anforderungen entspricht. Sie erstellen beispielsweise für jede neue Funktion eine dedizierte Verzweigung sowie eine weitere nur für Fehlerbehebungen oder folgen einem gestapelten Workflow, der von früheren Änderungen abzweigt, sodass Codeänderungen aufeinander aufbauen.

Commits

Ein Commit zeichnet eine Reihe von Änderungen am Quellcode und Repository-Verlauf auf. Als Best Practice stellen atomare Commits eine einzige logische Änderung dar, die nur eine bestimmte Aufgabe übernimmt, alle erforderlichen Tests besteht und ohne Fehler kompiliert oder erstellt wird, wodurch die Codebasis in einem gültigen Zustand bleibt. Commits müssen von klaren und aussagekräftigen Commit-Nachrichten begleitet werden, die beschreiben, was sich geändert hat und warum.

Zusammenführung

Unter einer Zusammenführung versteht man die Einbindung geprüfter und genehmigter Codeänderungen aus einer Verzweigung in die Hauptverzweigung. Die meisten Modifikationen können automatisch zusammengeführt werden. Wenn ein Konflikt auftritt, beispielsweise wenn zwei separate Änderungen dieselben Codezeilen betreffen, muss das Zusammenführen manuell durchgeführt werden, um die Konflikte zu lösen.

Was ist der Unterschied zwischen Quellcode-Verwaltung und Versionskontrolle?

Quellcode-Verwaltung und Versionskontrolle werden oft synonym verwendet, haben aber unterschiedliche Zwecke.

Die Versionskontrolle ist nur ein Teil der Quellcode-Verwaltung. Sie konzentriert sich auf die Nachverfolgung und Verwaltung des Versionsverlaufs und hat daher einen geringen Umfang.

Zur Quellcode-Verwaltung gehört neben der Versionskontrolle auch die Verwaltung von Arbeitsabläufen und die Organisation des Codes. Sie ist breiter gefasst und berührt verschiedene Phasen des Softwareentwicklungslebenszyklus (SDLC).

Quellcode-Verwaltung im SDLC

Die Quellcode-Verwaltung ist für die meisten Phasen des Softwareentwicklungszyklus von entscheidender Bedeutung. SCM fördert die korrekte Handhabung von Code während seines gesamten SDLC-Prozesses.

Design

Diese Phase beinhaltet die Ausarbeitung des Projektdesigns, wozu auch die Auswahl einer Repository-Architektur und deren Einrichtung gehören. Teams erstellen einen vorläufigen Entwurf der Struktur des Repositorys auf Basis der im Designdokument oder im Anforderungsspezifikationsdokument definierten Software-Komponenten, Funktionen oder Meilensteine. Prototyping kann Teams helfen, zu verstehen und zu visualisieren, wie der Quellcode des Projekts und die unterstützenden Dateien gespeichert und organisiert werden.

Codierung

In der Entwicklungsphase werden Verzweigungen etabliert. Entwickler schreiben und committen Code und erstellen dann Pull Requests, um ihre vorgeschlagenen Änderungen zur Codeprüfung zu markieren. Die Prüfer bewerten die Änderungen, bevor sie zusammengeführt werden, um die Codequalität zu gewährleisten.

Testen

SCM arbeitet mit Continuous Integration (CI) zusammen, dem ersten Teil der CI/CD-Pipeline und einem der Kennzeichen der DevOps Methodik. Wenn Quellcode ins Repository gepusht wird, lösen CI-Server wie CircleCI, GitHub Actions, GitLab CI/CD und Jenkins den Build-Prozess aus und automatisieren Codekompilierung und Packaging. CI-Tools führen automatisierte Tests durch, um sicherzustellen, dass Änderungen den Code nicht beschädigen, und erkennen Probleme, bevor sie in die Produktion weitergeleitet werden.

Bereitstellung

Die Quellcode-Verwaltung integriert sich mit Continuous Delivery (CD), das dort ansetzt, wo CI aufhört. SCM-Tools helfen sicherzustellen, dass nur stabile und gültige Quellcode-Versionen bereitgestellt werden, während CD-Tools die Lieferung von bereitstellbaren Codeänderungen automatisieren, nachdem diese automatisierte Tests bestanden haben.

Durch eine kontinuierliche Bereitstellung werden erfolgreich validierte Änderungen automatisch in die Produktion übernommen. Falls eine Bereitstellung fehlschlägt, arbeiten diese Systeme (SCM, CI/CD und kontinuierliche Bereitstellung) zusammen, um nahtlos auf eine frühere stabile Version zurückzugreifen.

Wartung

SCM ermöglicht reibungslosere Zyklen für zukünftige Veröffentlichungen. Es ist ein integraler Bestandteil der Verwaltung von Codebasen, die sich mit Fixes, Verbesserungen, neuen Funktionen, Patches, Leistungsoptimierungen, Refactoring und anderen Updates weiterentwickeln.

 
Vorteile der Quellcode-Verwaltung

Softwareentwicklungsteams können folgende Vorteile aus SCM-Systemen ziehen:

  • Zugriffskontrolle und -überwachung

  • Codebasis-Backups

  • Verbesserungen der Codequalität

  • Effiziente Zusammenarbeit

  • Schnelle Software-Veröffentlichungen

Zugriffskontrolle und Prüfung

Die Quellcode-Verwaltung kann den Zugriff auf ein Repository einschränken und so sicherstellen, dass nur authentifizierte und autorisierte Benutzer Änderungen vornehmen dürfen. Dies trägt zum Schutz des geistigen Eigentums eines Unternehmens bei und erweist sich als besonders wertvoll für Sektoren wie das Finanz- und Gesundheitswesen, in denen der Schutz sensibler Daten nach wie vor von entscheidender Bedeutung ist.

Diese Systeme unterstützen auch die Durchführung von Audits. SCM speichert einen vollständigen Versionsverlauf aller Codeänderungen und erzeugt so einen lückenlosen Prüfpfad. Dies hilft Entwicklern zu verstehen, was geändert wurde und warum (durch Commit-Nachrichten), wer sie implementiert hat und wann sie angewendet wurden, wodurch das Debuggen einfacher und schneller erfolgt.

Codebasis-Backups

Einige SCM-Tools und Versionskontrollsysteme bieten Funktionen zum Sichern von Repos. Dies bietet eine Möglichkeit, Codebasen bei kritischen Ausfällen oder plötzlichen Störungen wiederherzustellen, sodass Teams nicht bei Null anfangen müssen.

Verbesserungen der Codequalität

Die Quellcode-Verwaltung vereinfacht die Verbesserungen der Codequalität. Pull-Requests dienen als Checkpoints und stellen sicher, dass Commits genehmigt werden, bevor sie mit dem Hauptbereich zusammengeführt werden. SCM-Systeme können auch mit Lintern arbeiten, um Formatierungs- oder Stilfehler zu überprüfen, mit statischen Code-Analysetools , um logische Fehler und Syntaxfehler zu identifizieren, sowie mit CI-Tools, um Sicherheitsscans durchzuführen und sicherzustellen, dass Codeänderungen alle Tests bestehen.

Effiziente Zusammenarbeit

Mit der Quellcode-Verwaltung können mehrere Entwickler zu Softwareprojekten beitragen. Sie müssen nicht aufeinander warten, bevor sie mit ihrer eigenen Aufgabe beginnen. Alle Änderungen werden am Ende zusammengeführt, wobei etwaige Konflikte behoben werden.

Teams, die über verschiedene Standorte verteilt arbeiten, können auf der Arbeit der anderen aufbauen, ohne befürchten zu müssen, dass ihre Änderungen überschrieben werden. Mitglieder können Änderungen über Pull-Requests miteinander teilen, während Peer-Reviews die Weitergabe von Wissen und Feedback fördern.

Schnelle Software-Veröffentlichungen

Durch SCM kann jedes Teammitglied unabhängig und dennoch gleichzeitig arbeiten. Und da die Quellcode-Verwaltung nahtlos in CI/CD-Pipelines integriert ist, verlaufen die Lieferzyklen schneller. Die Entwicklungsteams können schnell auf Produktionsprobleme reagieren und Patches zügiger veröffentlichen.

Tools zur Quellcode-Verwaltung

Eine der frühesten Iterationen von SCM-Tools war das Quellcode Control System (SCCS), das in den 1970er Jahren vom Bell Labs Programmierer Marc Rochkind entwickelt wurde. SCCS setzte einen strengen Sperrmechanismus durch, der es jeweils nur einer Person erlaubte, eine Datei zu bearbeiten, wobei die Änderungen als vollständige Kopien gespeichert wurden. Sein Nachfolger, das Revision Control System (RCS), hat das SCCS verbessert, indem es die neueste Version einer Datei beibehält, aber nur die Unterschiede zwischen älteren Versionen speichert.

In den 1980er Jahren entstand das Concurrent Versions System (CVS). Es baute auf dem RCS auf und folgte einem Client-Server-Repository-Modell, das Parallelverarbeitung und Zusammenführung einführte.

Subversion (SVN) entstand Anfang der 2000er Jahre mit dem Ziel, ein „besseres CVS“ zu sein. Es behielt viele der Funktionalitäten von CVS bei, wurde aber um Funktionen wie atomare Commits und versionierte Verzeichnisse ergänzt. Offiziell bekannt als Apache Subversion, wird es derzeit als Open-Source-Projekt von der Apache Software Foundation betrieben und weiterhin weit verbreitet genutzt.

Mitte der 2000er Jahre kam es zu dezentralen Versionskontrollsystemen. Linux-Schöpfer Linus Torvalds leitete die Entwicklung von Git, einem Open-Source-Versionskontrollsystem, das ursprünglich für den Linux-Kernel entwickelt wurde. Anstatt Dateien und deren Änderungen zu speichern, speichert Git Snapshots des Zustands eines Projekts über die Zeit. Es kann eigenständig verwendet werden, indem man Git-Befehle auf der Kommandozeile ausführt, verfügt aber auch über ein reichhaltiges Ökosystem an Tools, darunter GUIs und IDE-Integrationen.

Git bildet die Grundlage für einige der heutzutage beliebtesten Tools zur Quellcode-Verwaltung, darunter Bitbucket, GitHub und GitLab. Aber da KI-Agenten mittlerweile riesige Mengen an Code generieren, überdenken einige Unternehmen ihr SCM. Zum Beispiel bezeichnet sich Cursors Origin selbst als „Git-Schmiede für das agentische Zeitalter“, während Zeds DeltaDB Codeänderungen mit der Agentenkonversation verknüpft, die sie ausgelöst hat. Ähnlich arbeitet GitLab an dem, was es als „Quellcode-Verwaltung der nächsten Generation“ für Flotten von Codierungsagenten bezeichnet.

AI Academy

KI-Experte werden

Erlangen Sie das nötige Wissen, um KI-Investitionen zu priorisieren, die das Unternehmenswachstum vorantreiben. Starten Sie noch heute mit unserer kostenlosen AI Academy und gestalten Sie die Zukunft der KI in Ihrem Unternehmen.

Autoren

Rina Diane Caballar

Staff Writer

IBM Think

Cole Stryker

Staff Editor, AI Models

IBM Think

Verwandte
IBM Bob

Beschleunigen Sie die Softwarebereitstellung mit Bob, Ihrem KI-Partner für sichere, absichtsorientierte Entwicklung.

IBM Bob erkunden
KI für Entwicklerlösungen

Entwickeln, bereitstellen und verwalten Sie KI-Anwendungen schneller mit unternehmensgerechten Tools.

KI für Entwickler erkunden
Services zur Anwendungsmodernisierung

Gestalten Sie Altsysteme durch intelligente KI-Modernisierung neu.

Services zur Anwendungsmodernisierung erkunden
Machen Sie den nächsten Schritt

Nutzen Sie generative KI und fortschrittliche Automatisierung, um unternehmensgerechten Code schneller und konsistenter bereitzustellen. Bob-Modelle erweitern die Kompetenzen der Entwickler, optimieren Workflows für die Modernisierung und vereinfachen komplexe Entwicklungsaufgaben.

  1. AI Coding Agenten erkunden
  2. Lösungen für KI-Entwickler entdecken