<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Versionsverwaltung</id>
	<title>Versionsverwaltung - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Versionsverwaltung"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Versionsverwaltung&amp;action=history"/>
	<updated>2026-06-09T04:26:33Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Versionsverwaltung&amp;diff=46732&amp;oldid=prev</id>
		<title>imported&gt;Y2kbug: doppeltes Leerzeichen</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Versionsverwaltung&amp;diff=46732&amp;oldid=prev"/>
		<updated>2026-03-11T08:09:09Z</updated>

		<summary type="html">&lt;p&gt;doppeltes Leerzeichen&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Eine &amp;#039;&amp;#039;&amp;#039;Versionsverwaltung&amp;#039;&amp;#039;&amp;#039; ist ein System, das zur Erfassung von Änderungen an Dokumenten oder Dateien verwendet wird. Alle Versionen werden in einem Archiv mit [[Zeitstempel]] und Benutzerkennung gesichert und können später wiederhergestellt werden. Versionsverwaltungssysteme werden typischerweise in der Softwareentwicklung eingesetzt, um [[Quelltext]]e zu verwalten. Versionsverwaltung kommt auch bei [[Büroanwendung]]en oder [[Content-Management-System]]en zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel ist die Protokollierung in vielen [[Wiki]]s: Hier erzeugt die Software nach jeder Änderung eines Artikels eine neue Version. Alle Versionen bilden eine Kette, in der die jeweils letzte Version gültig ist; es sind meist keine Varianten vorgesehen. Da zu jedem Versionswechsel die grundlegenden Angaben wie Verfasser und Uhrzeit festgehalten werden, kann genau nachvollzogen werden, wer wann was geändert hat. Bei Bedarf – beispielsweise bei versehentlichen Änderungen – kann man zu einer früheren Version zurückkehren. &lt;br /&gt;
&lt;br /&gt;
Die Versionsverwaltung ist eine Form des [[Variantenmanagement]]s; dort sind verschiedene Sprachvarianten oder modal auch anders bestimmte Varianten möglich. Für Versionsverwaltungssysteme ist die Abkürzung &amp;#039;&amp;#039;&amp;#039;VCS&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;Version Control System&amp;#039;&amp;#039;&amp;#039;) gebräuchlich.&lt;br /&gt;
&lt;br /&gt;
== Hauptaufgaben ==&lt;br /&gt;
* [[Protokollierung]]en der Änderungen: Es kann jederzeit nachvollzogen werden, wer wann was geändert hat.&lt;br /&gt;
* [[Rollback|Wiederherstellung]] von alten Ständen einzelner Dateien: Somit können versehentliche Änderungen jederzeit wieder rückgängig gemacht werden.&lt;br /&gt;
* [[Elektronische Archivierung|Archivierung]] der einzelnen Stände eines Projektes: Dadurch ist es jederzeit möglich, auf alle Versionen zuzugreifen.&lt;br /&gt;
* Koordinierung des gemeinsamen Zugriffs von mehreren Entwicklern auf die Dateien.&lt;br /&gt;
* Gleichzeitige Entwicklung mehrerer [[Entwicklungszweig|Entwicklungszweige]] (engl. &amp;#039;&amp;#039;Branch&amp;#039;&amp;#039;) eines Projektes, was nicht mit der [[Abspaltung_(Softwareentwicklung)|Abspaltung]] eines anderen Projekts (engl. &amp;#039;&amp;#039;Fork&amp;#039;&amp;#039;) verwechselt werden darf.&lt;br /&gt;
&lt;br /&gt;
== Terminologie ==&lt;br /&gt;
{{Anker|Branch}}Ein &amp;#039;&amp;#039;Branch&amp;#039;&amp;#039;, zu Deutsch Zweig, ist eine Verzweigung zu einer neuen Version, so dass unterschiedliche Versionen parallel im selben Projekt weiterentwickelt werden können. Änderungen können dabei von einem Branch auch wieder in einen anderen einfließen, was als &amp;#039;&amp;#039;Merging&amp;#039;&amp;#039;, zu deutsch verschmelzen, bezeichnet wird. Oft wird der Hauptentwicklungszweig als &amp;#039;&amp;#039;Trunk&amp;#039;&amp;#039; (z.&amp;amp;nbsp;B. bei [[Apache Subversion|Subversion]]) oder Main (ehemals &amp;#039;&amp;#039;Master)&amp;#039;&amp;#039; (z.&amp;amp;nbsp;B. bei [[Git]]) bezeichnet. Branches können zum Beispiel für neue Hauptversionen einer Software erstellt werden oder für Entwicklungszweige für unterschiedliche Betriebssysteme oder aber auch, um experimentelle Versionen zu erproben. Wird ein Zweig in einer neuen, unabhängigen Versionsverwaltung erstellt, spricht man von einem [[Abspaltung (Softwareentwicklung)|Fork]]. Ein bestimmter Stand kann auch mit einem &amp;#039;&amp;#039;Tag&amp;#039;&amp;#039; (einem frei wählbaren Bezeichner) gekennzeichnet werden.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise ==&lt;br /&gt;
Damit die eingesetzten Programme wie z.&amp;amp;nbsp;B. [[Texteditor]]en oder [[Compiler]] mit den im &amp;#039;&amp;#039;[[Repository]]&amp;#039;&amp;#039; (engl. Behälter, Aufbewahrungsort) abgelegten Dateien arbeiten können, ist es erforderlich, dass jeder Entwickler sich den aktuellen (oder einen älteren) Stand des Projektes in Form eines Verzeichnisbaumes aus herkömmlichen Dateien erzeugen kann. Ein solcher Verzeichnisbaum wird als &amp;#039;&amp;#039;Arbeitskopie&amp;#039;&amp;#039; bezeichnet. Ein wichtiger Teil des Versionsverwaltungssystems ist ein Programm, das in der Lage ist, diese &amp;#039;&amp;#039;Arbeitskopie&amp;#039;&amp;#039; mit den Daten des Repositorys zu synchronisieren. Das Übertragen einer Version aus dem Repository in die Arbeitskopie wird als &amp;#039;&amp;#039;Checkout&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Aus-Checken&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;Aktualisieren&amp;#039;&amp;#039; bezeichnet, während die umgekehrte Übertragung &amp;#039;&amp;#039;Check-in&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Einchecken&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;[[Commit (Versionskontrolle)|Commit]]&amp;#039;&amp;#039; genannt wird. Solche Programme werden entweder [[kommandozeile]]norientiert, mit [[Grafische Benutzeroberfläche|grafischer Benutzeroberfläche]] oder als Plugin für [[Integrierte Entwicklungsumgebung|integrierte Softwareentwicklungsumgebungen]] ausgeführt. Häufig werden mehrere dieser verschiedenen Zugriffsmöglichkeiten wahlweise bereitgestellt. &lt;br /&gt;
&lt;br /&gt;
Es gibt drei Arten der Versionsverwaltung, die älteste funktioniert lokal, also nur auf einem Computer, die nächste Generation funktionierte mit einem zentralen Archiv und die neueste Generation arbeitet verteilt, also ohne zentrales Archiv. Allen gemein ist, dass die Versionsverwaltungssoftware dabei üblicherweise nur die Unterschiede zwischen zwei Versionen speichert, um Speicherplatz zu sparen. Die meisten Systeme verwenden hierfür ein eigenes [[Dateiformat]] oder eine [[Datenbank]]. Dadurch kann eine große Zahl von Versionen archiviert werden. Durch dieses Speicherformat kann jedoch nur mit der Software des Versionsverwaltungssystems auf die Daten zugegriffen werden, die die gewünschte Version bei einem Abruf unmittelbar aus den archivierten Versionen rekonstruiert. &lt;br /&gt;
&lt;br /&gt;
=== Lokale Versionsverwaltung ===&lt;br /&gt;
Bei der lokalen Versionsverwaltung wird oft nur eine einzige Datei versioniert, diese Variante wurde mit Werkzeugen wie [[Source Code Control System|SCCS]] und [[Revision Control System|RCS]] umgesetzt. Sie findet auch heute noch Verwendung in Büroanwendungen, die Versionen eines Dokumentes in der Datei des Dokuments selbst speichern. Auch in [[Technische Zeichnung|technischen Zeichnungen]] werden Versionen zum Beispiel durch einen [[Änderungsindex]] verwaltet.&lt;br /&gt;
&lt;br /&gt;
=== Zentrale Versionsverwaltung ===&lt;br /&gt;
Diese Art ist als [[Client-Server-System]] aufgebaut, sodass der Zugriff auf ein Repository auch über Netzwerk erfolgen kann. Durch eine [[Mehrbenutzersystem|Rechteverwaltung]] wird dafür gesorgt, dass nur berechtigte Personen neue Versionen in das Archiv legen können. Die Versionsgeschichte ist hierbei nur im Repository vorhanden. Dieses Konzept wurde vom Open-Source-Projekt [[Concurrent Versions System]] (CVS) populär gemacht, mit [[Apache Subversion|Subversion]] (SVN) neu implementiert und von vielen kommerziellen Anbietern verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Verteilte Versionsverwaltung ===&lt;br /&gt;
Die verteilte Versionsverwaltung (&amp;#039;&amp;#039;&amp;#039;DVCS&amp;#039;&amp;#039;&amp;#039;, distributed VCS) verwendet kein zentrales Repository mehr. Jeder, der an dem verwalteten Projekt arbeitet, hat sein eigenes Repository und kann dieses mit jedem beliebigen anderen Repository abgleichen. Die Versionsgeschichte ist dadurch genauso verteilt. Änderungen können lokal verfolgt werden, ohne eine Verbindung zu einem Server aufbauen zu müssen. &lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zur zentralen Versionsverwaltung kommt es nicht zu einem Konflikt, wenn mehrere Benutzer dieselbe Version einer Datei ändern. Die sich widersprechenden Versionen existieren zunächst parallel und können weiter geändert werden. Sie können später in eine neue Version zusammengeführt werden. Dadurch entsteht ein [[Graph (Graphentheorie)#Zyklisch/azyklisch|gerichteter azyklischer Graph]] ([[Polyhierarchie]]) anstatt einer Kette von Versionen. In der Praxis werden bei der Verwendung in der Softwareentwicklung meist einzelne Features oder Gruppen von Features in separaten Versionen entwickelt und diese bei größeren Projekten von Personen mit einer Integrator-Rolle überprüft und zusammengeführt.&lt;br /&gt;
&lt;br /&gt;
Systembedingt bieten verteilte Versionsverwaltungen keine Locks. Da wegen der höheren Zugriffsgeschwindigkeit die Granularität der gespeicherten Änderungen viel kleiner sein kann, können sie sehr leistungsfähige, weitgehend automatische Merge-Mechanismen zur Verfügung stellen. &lt;br /&gt;
&lt;br /&gt;
Eine Unterart der Versionsverwaltung bieten einfachere Patchverwaltungssysteme, die Änderungen nur in eine Richtung in Produktivsysteme einspeisen.&lt;br /&gt;
&lt;br /&gt;
Obwohl konzeptionell nicht unbedingt notwendig, existiert in verteilten Versionsverwaltungsszenarien üblicherweise ein offizielles Repository. Das offizielle Repository wird von neuen Projektbeteiligten zu Beginn ihrer Arbeit geklont, d.&amp;amp;nbsp;h. auf das lokale System kopiert.&lt;br /&gt;
&lt;br /&gt;
== Konzepte ==&lt;br /&gt;
=== Lock Modify Write ===&lt;br /&gt;
Diese Arbeitsweise eines Versionsverwaltungssystems wird auch als Lock Modify Unlock bezeichnet. Die zugrunde liegende Philosophie wird &amp;#039;&amp;#039;&amp;#039;pessimistische Versionsverwaltung&amp;#039;&amp;#039;&amp;#039; genannt. Einzelne Dateien müssen vor einer Änderung durch den Benutzer gesperrt und nach Abschluss der Änderung wieder freigegeben werden. Während sie gesperrt sind, verhindert das System Änderungen durch andere Benutzer. Der Vorteil dieses Konzeptes ist, dass kein Zusammenführen von Versionen erforderlich ist, da immer nur ein Entwickler eine Datei ändern kann. Der Nachteil ist, dass man unter Umständen auf die Freigabe eines Dokuments warten muss, um eine eigene Änderung einzubringen. Binärdateien (im Gegensatz zu Quelltextdateien) erfordern in der Regel diese Arbeitsweise, da das Versionsverwaltungssystem verteilte Änderungen nicht automatisch synchronisieren kann. &lt;br /&gt;
Ältester Vertreter dieser Arbeitsweise ist das [[Revision Control System]], ebenso bekannt ist [[Visual SourceSafe]].&lt;br /&gt;
Verteilte Versionsverwaltungssysteme kennen systembedingt diese Arbeitsweise nicht.&lt;br /&gt;
&lt;br /&gt;
=== Copy Modify Merge ===&lt;br /&gt;
Ein solches System lässt gleichzeitige Änderungen durch mehrere Benutzer an einer Datei zu. Anschließend werden diese Änderungen automatisch oder manuell zusammengeführt ([[Merge]]). Somit wird die Arbeit des Entwicklers wesentlich erleichtert, da Änderungen nicht im Voraus angekündigt werden müssen. Insbesondere wenn viele Entwickler räumlich getrennt arbeiten, wie es beispielsweise bei Open-Source-Projekten häufig der Fall ist, ermöglicht dies erst effizientes Arbeiten, da kein direkter Kontakt zwischen den Entwicklern benötigt wird. Problematisch bei diesem System sind Binärdateien, da diese oft nicht automatisch zusammengeführt werden können, sofern kein passendes Werkzeug verfügbar ist. Manche Vertreter dieser Gattung unterstützen daher auch alternativ das Lock-Modify-Write-Konzept für bestimmte Dateien. &lt;br /&gt;
&lt;br /&gt;
Die zugrunde liegende Philosophie wird als &amp;#039;&amp;#039;&amp;#039;optimistische Versionsverwaltung&amp;#039;&amp;#039;&amp;#039; bezeichnet und wurde entwickelt, um die Schwächen der pessimistischen Versionsverwaltung zu beheben. Alle modernen zentralen und verteilten Systeme setzen dieses Verfahren um.&lt;br /&gt;
&lt;br /&gt;
== Objekt-basierte Versionierung ==&lt;br /&gt;
Über die Grenze des abspeichernden Mediums, der [[Datei]], hinaus geht die Objekt-basierte Versionierung. [[Objekt (Programmierung)|Objekte]] werden in der Informatik als sogenannte Instanzen, also Ausprägungen eines Schemas, erzeugt. Auch diese können versioniert gespeichert werden. Die Versionsverwaltung, welche die unterschiedlichen Objektversionen abspeichert, muss mit den entsprechenden Objekttypen umgehen können. Aus dem Grund liest ein solches System nicht allein die Datei und überprüft diese auf Veränderungen, sondern kann die darin enthaltene [[Semantik]] interpretieren. Üblicherweise werden Objekte dann nicht dateibasiert, sondern in einer Datenbank abgespeichert. [[Produktdatenmanagement]]-Systeme (PDM-Systeme) verwalten ihre Daten nach diesem Prinzip.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
Die folgende Tabelle enthält einige Versionsverwaltungssysteme als Beispiele für die verschiedenen Ausprägungsarten.&lt;br /&gt;
{|class=&amp;quot;wikitable toptextcells&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
! style=&amp;quot;text-align:left&amp;quot; | [[Open Source|Open-Source]]-Systeme&lt;br /&gt;
! style=&amp;quot;text-align:left&amp;quot; | [[Proprietär]]e Systeme&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Zentrale Systeme&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
||&lt;br /&gt;
* [[MediaWiki]]&lt;br /&gt;
* [[Source Code Control System|SCCS]]&lt;br /&gt;
* [[Revision Control System|RCS]]&lt;br /&gt;
* [[Concurrent Versions System|CVS]]&lt;br /&gt;
* [[Apache Subversion|Subversion]] (SVN)&lt;br /&gt;
|| &lt;br /&gt;
* [[Alienbrain]]&lt;br /&gt;
* [[Perforce]]&lt;br /&gt;
* [[Team Foundation Server]]&lt;br /&gt;
* [[Visual SourceSafe]]&lt;br /&gt;
* [[Rational ClearCase|ClearCase]]&lt;br /&gt;
* [[Rational_Synergy|IBM Rational Synergy]]&lt;br /&gt;
* [[PTC-Integrity|PTC Integrity]]&lt;br /&gt;
* SAP [[Design Time Repository]] (DTR)&lt;br /&gt;
* versiondog (für SPS, Roboter, Automatisierungsgeräte)&lt;br /&gt;
* Sourcegear Vault (ehem. Fortress)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Verteilte Systeme&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
|| &lt;br /&gt;
* [[Bazaar]]&lt;br /&gt;
* [[BitKeeper]]&lt;br /&gt;
* [[Darcs]]&lt;br /&gt;
* [[Fossil (Software)|Fossil]]&lt;br /&gt;
* [[Git]]&lt;br /&gt;
* [[GNU arch]]&lt;br /&gt;
* [[Mercurial]]&lt;br /&gt;
* [[Monotone]]&lt;br /&gt;
|| &lt;br /&gt;
* [[Rational Team Concert]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Versionsnummer]]&lt;br /&gt;
*[[Versionshinweise]]&lt;br /&gt;
* [[Source Code Control System]]&lt;br /&gt;
* [[Dokumentenmanagement]]&lt;br /&gt;
* [[Logdatei]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://biz30.timedoctor.com/git-mecurial-and-cvs-comparison-of-svn-software/ Vergleich von SVN, Git, Mercurial und CVS] (englisch)&lt;br /&gt;
* [http://linuxmafia.com/faq/Apps/vcs.html Liste von Versionverwaltungssystemen speziell für Linux] (englisch, 2004)&lt;br /&gt;
* [http://www.gesis.org/fileadmin/upload/forschung/publikationen/gesis_reihen/iz_arbeitsberichte/ab_36.pdf Versionskontrollsysteme in der Softwareentwicklung] (2005; PDF; 790&amp;amp;nbsp;kB)&lt;br /&gt;
* [https://cre.fm/cre130-verteilte-versionskontrollsysteme Verteilte Versionskontrollsysteme] (2009), [[CRE (Podcast)|CRE]]&lt;br /&gt;
* [http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/ Einführung in Verteilte Versionsverwaltung] (englisch)&lt;br /&gt;
* [https://semver.org/lang/de/ Semantic Versioning]&lt;br /&gt;
&lt;br /&gt;
{{Normdaten|TYP=s|GND=4202033-5}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Kollaborationssoftware]]&lt;br /&gt;
[[Kategorie:Versionsverwaltung| ]]&lt;br /&gt;
[[Kategorie:Content-Management-System]]&lt;br /&gt;
[[Kategorie:Anforderungsmanagement]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Y2kbug</name></author>
	</entry>
</feed>