Im Softwareentwicklungsprozess ist die Revisionskontrolle, auch bekannt als Versionskontrolle oder Quellcodeverwaltung, die Verwaltung von Änderungen, die im Laufe der Zeit vorgenommen wurden. Diese Änderungen können den Quellcode, Projektressourcen oder andere Informationen betreffen, die in das fertige Produkt einfließen. Es ermöglicht vielen Menschen, an denselben Teilen eines Projekts zu arbeiten, ohne befürchten zu müssen, dass ihre Änderungen die Arbeit anderer überschreiben. Die Sammlung von Revisionen und ihren Metadaten wird als Repository oder Repo bezeichnet. Das Repository stellt eine chronologische Schritt-für-Schritt-Aufzeichnung aller vorgenommenen Änderungen dar, um Projektmanagern dabei zu helfen, das gesamte Projekt oder einen Teil davon bei Bedarf in einen früheren Zustand zurückzusetzen.
Wie Überarbeitungen vorgenommen werden
Revisionskontrollsysteme werden normalerweise auf einem vernetzten Server gehostet. Nachdem das Repository eingerichtet wurde, umfasst die Verwendung im Allgemeinen die folgenden Schritte:
- Wenn der Entwickler eine neue Datei erstellt hat, die Teil des Projekts werden soll, muss die Datei dem Repository hinzugefügt werden. Die Datei wird in das Repository hochgeladen, und alle anderen Personen, die am Projekt arbeiten, können die Datei sehen und verwenden.
- Wenn der Entwickler eine Datei bearbeiten möchte, die bereits Teil des Projekts ist, muss die Datei ausgecheckt werden. Beim Auschecken wird die gewünschte Revision der Datei in die lokale Version des Projekts des Entwicklers heruntergeladen. Normalerweise ist die Revision, die ein Entwickler bearbeiten möchte, die neueste Revision: Diese Revision ist als “Kopf” bekannt.
- Nachdem der Entwickler die Datei lokal bearbeitet hat und bereit ist, sie der offiziellen Version des Projekts hinzuzufügen, kann die Datei eingecheckt werden. Diese Aktion wird auch als Festschreiben bezeichnet. Der Entwickler wird gebeten, eine Zusammenfassung darüber zu schreiben, welche Änderungen vorgenommen wurden und warum. Diese Kommentare werden zusammen mit der aktualisierten Version der Datei in das Repository hochgeladen.
- Wenn seit dem letzten Auschecken des Entwicklers eine andere Person Revisionen in dieselbe Datei eingecheckt hat, meldet das System, dass es Konflikte gibt. Es berechnet die Unterschiede Zeile für Zeile, und die Entwickler, die die Änderungen vorgenommen haben, müssen sich darauf einigen, wie ihre individuellen Änderungen zusammengeführt werden sollen. Das Zusammenführen erfolgt normalerweise manuell: Die Entwickler vergleichen die widersprüchlichen Versionen und entscheiden, wie sie in einem Dokument aufgelöst werden.
- Wenn es keine Konflikte gibt, wird die neue Version im Repository aktualisiert und das gesamte Projekt erhält eine neue Revisionsnummer, die seinen aktuellen Stand dauerhaft und eindeutig identifiziert.
Verzweigung des Entwicklungsbaums
An der Hauptversion eines Softwareprojekts werden häufig experimentelle Änderungen vorgenommen. Mithilfe der Revisionskontrolle können diese Änderungen an einer separaten Kopie des Projekts vorgenommen werden, ohne die Entwicklung der Hauptversion zu beeinträchtigen. Die Terminologie für diesen Ansatz verwendet die Metapher eines Baums: Die Hauptversion des Projekts wird Stamm genannt, und experimentelle Versionen werden als Zweige bezeichnet.
Zentralisierte vs. verteilte Systeme
Wenn ein Revisionskontrollsystem ein zentrales Repository verwendet, sind seine Daten in einer einzigen Datenbank enthalten, die die maßgebliche Version aller Projektdateien enthält. Andere Systeme verwenden ein verteiltes Modell. In diesen Systemen können Änderungen überprüft und dann zwischen Repositories synchronisiert werden.
Liste der Revisionskontrollsoftware
Softwaretitel | Zusammenfassung | Webseite |
---|---|---|
Ägide | Wird für TDD (testgetriebene Entwicklung) verwendet. Jede Änderung muss einen oder mehrere Tests enthalten, die nachweislich fehlschlagen, wenn sie mit dem aktuell eingecheckten Code ausgeführt werden, und die bestanden werden, wenn sie mit dem neu geänderten Code ausgeführt werden. Arbeitet auf einem separaten Versionskontrollsystem, normalerweise RCS oder SCSS. Kostenlos, Open Source und unter der GPL lizenziert. | Ägide |
ArX | Ein verteiltes Revisionskontrollsystem, das als Fork von GNU Arch begann. Hauptsächlich zwischen 2003 und 2005 entwickelt. | ArX |
Autodesk-Tresor | Ein spezialisiertes Revisionskontrollsystem für verschiedene Autodesk-CAD-Softwareprodukte, darunter Autodesk Inventor Professional, AutoCAD Mechanical, AutoCAD Electrical und Autodesk Revit. Ermöglicht Designern, frühere Designs wiederzuverwenden, anstatt von vorne zu beginnen, und von jedem Punkt ihres Designprozesses aus auf komplizierte 3D-Schemata zuzugreifen. | Autodesk-Tresor |
Azure DevOps-Server | Ein von Microsoft entwickeltes Software- und Systempaket, das Quellcodeverwaltung und kollaborative Tools für die Softwareentwicklung bereitstellt. Azure DevOps Server bietet auch Anwendungen, die Projektberichte, automatisierte Builds, Lab-Management, Tests und Release-Management erleichtern. Konzipiert für die Integration mit den meisten IDE- oder Editor-Tools. | Azure DevOps-Server |
Basar | Ein verteiltes Revisionskontrollsystem, auch bekannt als GNU Bazaar. Seine Entwicklung wird von Canonical gesponsert, das auch die Linux-Distribution Ubuntu entwickelt. Läuft unter Linux, OS X und Windows. Erleichtert die Arbeit mit Repositories aus anderen Systemen wie CVS, Subversion, Git, Mercurial, Darcs und Perforce. | Basar |
BitKeeper | Proprietäre Software, die zur Verwaltung der Entwicklung des Linux-Kernels von 2002 bis 2005 verwendet wurde. Verfügbar für viele Betriebssysteme, einschließlich AIX, BSD, HP-UX, IRIX, Solaris, Linux und Microsoft Windows. | BitKeeper |
Code-Genossenschaft | Ein Versionskontrollsystem, das anstelle eines zentralisierten Servers Peer-to-Peer-Kommunikation zum Synchronisieren und Steuern von Versionen verwendet. Unterstützt Commits per E-Mail. Läuft auf Microsoft Windows. | Code-Genossenschaft |
Concurrent-Versions-System | CVS wurde erstmals 1986 entwickelt und ist ein altehrwürdiges und einflussreiches Revisionskontrollsystem, das zuletzt 2008 aktualisiert wurde. Obwohl CVS immer noch für kleinere Projekte verwendet wird, fehlen viele der Merkmale moderner Revisionskontrolle, die für die Entwicklung professioneller Software in großem Maßstab entscheidend sind. Zu den Varianten von CVS gehören CVSNT, das Dateinamen ohne Berücksichtigung der Groß-/Kleinschreibung unterstützt, und OpenCVS, das stärkere Sicherheitsmethoden verwendet. | Concurrent-Versions-System |
Darcs | Ein verteiltes System, das in der Programmiersprache Haskell geschrieben und stark von ihr beeinflusst wurde. Unterstützt Commits per E-Mail. Funktioniert auf Unix-, Linux-, BSD-, OS X- und Microsoft Windows-Systemen. Open Source und unter der GPL lizenziert. | Darcs |
Fossil | Ein umfassendes Verwaltungssystem mit verteilter Revisionskontrolle, Fehlerverfolgung und kollaborativer Wiki-Software. Beinhaltet eine browserbasierte Schnittstelle und Befehlszeilentools. Läuft unter Linux, BSD, OS X und Windows. Kostenlos, Open Source und unter einer BSD-Softwarelizenz veröffentlicht. | Fossil |
Git | Ein verteiltes Revisionskontrollsystem, das von Linus Torvalds zur Verwendung bei der Entwicklung des Linux-Kernels entworfen und implementiert wurde. Git wurde erstmals 2005 veröffentlicht und ist heute das am weitesten verbreitete Versionskontrollsystem der Welt. Die Software ist kostenlos, Open Source und unter der GPL veröffentlicht. | Git |
GNU Arch | Ein verteiltes Versionskontrollsystem, das als Teil des GNU Free Software Project entwickelt wurde. Es wird immer noch verwendet, aber die Entwicklung beschränkt sich auf Sicherheitskorrekturen. Es wurde weitgehend von GNU Bazaar verdrängt. | GNU Arch |
IBM Rational ClearCase | Eine von IBM entwickelte Familie von Softwaretools, die Softwarekonfigurationsmanagement und Revisionskontrolle umfasst. Es unterstützt zwei Modelle des Projektmanagements: UCM (Unified Change Management) und ein Modell namens „Base ClearCase“, das eine umfassendere Konfiguration für die spezifischen Anforderungen einer Organisation ermöglicht. Es läuft auf AIX, HP-UX, Linux, zLinux, Solaris, z/OS und Microsoft Windows. | IBM Rational ClearCase |
IBM Rational Synergy | Softwarekonfigurationsverwaltungssoftware, die Projektverwaltungsfunktionen, einschließlich Revisionskontrolle, für alle Entwicklungsressourcen, einschließlich Binärdateien wie Bilder, bereitstellt. Enthält ein Change-Management-Tool namens Rational Change. Läuft unter AIX, HP-UX, Linux, Solaris und Windows. | IBM Rational Synergy |
Konzert des IBM Rational-Teams | Eine Agile ALM-Lösung (Application Lifecycle Management) von IBM. Konzentriert sich darauf, in Übereinstimmung mit agilen Entwicklungsmethoden einen umfassenden Einblick in die Projektaktivitäten und den Fortschritt einzelner Teams zu geben. | Konzert des IBM Rational-Teams |
IC verwalten | Ein kommerzielles Designdaten-Management-Softwaresystem, das Revisionskontrolle und Fehlerverfolgung bietet. Wird hauptsächlich für Industriedesignprojekte wie die Herstellung von NVIDIA-GPUs verwendet. | IC verwalten |
LibreSource | Ein kollaboratives Softwareentwicklungs-Managementsystem, das speziell für freie Softwareprojekte, Groupware, Community-Interaktion, elektronische Archivierung und Web-Publishing entwickelt wurde. Es ist plattformübergreifend und läuft auf Java. | LibreSource |
Quecksilber | Ein verteiltes Revisionskontrollsystem, das als Open-Source-Ersatz für BitKeeper entwickelt wurde. Läuft unter Linux, BSD, OS X und Windows. | Quecksilber |
Monoton | Ein Peer-to-Peer-Revisionskontrollsystem ähnlich GNU Arch, Subversion, Git und Mercurial. Läuft unter Unix, Linux, BSD, OS X und Windows. Kostenlos, Open Source und unter der GPL lizenziert. | Monoton |
PTC-Integrität | Ein SSLM-System (Software System Lifecycle Management), früher bekannt als MKS Integrity. Bietet eine Umgebung für die Zusammenarbeit, hauptsächlich für Ingenieurbüros. Es erleichtert die Versionskontrolle, das Anforderungsmanagement, das Engineering Change Management, das Build-Management, das Testmanagement und die Softwarebereitstellung. Läuft auf jeder Plattform, die Java unterstützt. | PTC-Integrität |
Notwendig | Ein proprietäres, kommerzielles Revisionskontrollsystem, das aus einer primären Datenbank und einem zentralen Repository besteht. Unterstützt Git-Clients und eigene. Plug-ins sind für die Integration mit Eclipse, Visual Studio und IntelliJ IDEA verfügbar. | Notwendig |
Kunststoff-SCM | Ein proprietäres, kommerzielles Revisionskontrolltool, das benutzerdefinierte GUI-Verwaltungsclients und die Integration mit Eclipse, Visual Studio und IntelliJ IDEA bietet. Läuft unter Linux, OS X und Microsoft Windows. | Kunststoff-SCM |
PVCS | Ein Revisionskontrollsystem für Windows-, Linux- und BSD-Systeme, auch bekannt als Polytron Version Control System oder PVCS Version Manager. Unterstützt “parallele Historien”, die es mehreren Benutzern ermöglichen, dieselbe Datei zu bearbeiten, ohne die Änderungen zum Commit-Zeitpunkt zusammenführen zu müssen. | PVCS |
Quma-Versionskontrollsystem | Ein Versionskontrollsystem, auch bekannt als QVCS, das ursprünglich 1998 für den Amiga entwickelt wurde. Heute läuft es unter Microsoft Windows, OS X und Solaris. Seine Codebasis ist in Java geschrieben. | |
RCS | Ein ehrwürdiges und einflussreiches System, das erstmals 1982 entwickelt wurde und auch als ursprüngliches Revisionskontrollsystem bekannt ist. | RCS |
SCCS | Ein frühes Revisionskontrollsystem, auch bekannt als Source Code Control System. Entwickelt in der SNOBOL-Sprache bei Bell Labs im Jahr 1972, später in C für UNIX umgeschrieben. Die meisten modernen Versionen von UNIX enthalten immer noch eine Version von SCCS. | SCCS |
SolidWorks Enterprise PDM | Ein Datenverwaltungssystem, das seine eigene API für maximale Konfigurierbarkeit über benutzerdefinierten Code bereitstellt. Wird hauptsächlich für Assets und Daten von CAD-Anwendungen verwendet. Läuft auf Windows 7 und Windows 8. | SolidWorks Enterprise PDM |
SourceAnywhere | Ein kommerzielles, proprietäres Versionskontrollsystem, das ein zentrales Repository verwaltet, das in Microsoft SQL Server gespeichert ist. Läuft auf Microsoft Windows-Betriebssystemen. | SourceAnywhere |
StarTeam | Ein Revisionskontrollsystem, das sich auf die Benutzerfreundlichkeit durch mehrere Entwicklungsteams an verschiedenen Standorten konzentriert. Es unterstützt Microsoft SQL Server und Oracle-Datenbanken für sein Repository. Es läuft auf Windows-Betriebssystemen und RHEL (Red Hat Enterprise Linux). | StarTeam |
Subversion | Ursprünglich als Nachfolger von CVS konzipiert, auch bekannt als Apache Subversion oder SVN. Äußerst beliebt bei der Free-Software-Community und auch bei der Softwareentwicklung in großen Unternehmen. Vollständig plattformübergreifend, kostenlos und Open Source, veröffentlicht unter der Apache-Lizenz. | Subversion |
Sun WorkShop TeamWare | Ein verteiltes Revisionskontrollsystem, auch bekannt als Forte TeamWare und Forte Code Management Software. Entwickelt von Sun Microsystems, verwendet für die Entwicklung der größten Softwareprojekte von Sun, einschließlich Solaris und Java. | Sun WorkShop TeamWare |
Gewölbe | Kommerzielles, proprietäres Versionskontrollsystem, das als Ersatzoption für Microsofts Visual Source Safe gedacht ist. Basiert auf Microsoft .NET und verwendet Microsoft SQL Server. Läuft auf den meisten Versionen von Windows. | Gewölbe |
Richtigkeit | Verteiltes Revisionskontrollsystem, das auch Fehlerverfolgung und Build-Management für Agile-Entwicklungsteams bietet. Kostenlos und Open Source, veröffentlicht unter der Apache-Lizenz. | Richtigkeit |
Vesta | Ein Software-Konfigurationsmanagement-Tool, das ursprünglich von DEC entwickelt und schließlich als Open-Source-Software unter der GPL veröffentlicht wurde. Zu den wichtigsten Funktionen gehören garantierte Build-Wiederholbarkeit, automatische Abhängigkeitserkennung und ein gemeinsam genutzter Build-Cache, der es Entwicklern ermöglicht, frühere Builds wiederzuverwenden. | Vesta |
Visual SourceSafe | Ein von Microsoft veröffentlichtes Softwarepaket zur Quellcodeverwaltung, das aufgrund seiner breiten Akzeptanz einen großen Einfluss hat. 2005 nach weit verbreiteter Kritik an seiner Stabilität eingestellt. | Visual SourceSafe |
Branch, Fehlerverfolgung, Zusammenarbeit, Programmierbegriffe, Trunk