www.wikidata.de-de.nina.az
Eine Versionsverwaltung ist ein System das zur Erfassung von Anderungen an Dokumenten oder Dateien verwendet wird Alle Versionen werden in einem Archiv mit Zeitstempel und Benutzerkennung gesichert und konnen spater wiederhergestellt werden Versionsverwaltungssysteme werden typischerweise in der Softwareentwicklung eingesetzt um Quelltexte zu verwalten Versionsverwaltung kommt auch bei Buroanwendungen oder Content Management Systemen zum Einsatz Ein Beispiel ist die Protokollierung in vielen Wikis hier erzeugt die Software nach jeder Anderung eines Artikels eine neue Version Alle Versionen bilden eine Kette in der die jeweils letzte Version gultig 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 geandert hat Bei Bedarf beispielsweise bei versehentlichen Anderungen kann man zu einer fruheren Version zuruckkehren Die Versionsverwaltung ist eine Form des Variantenmanagements dort sind verschiedene Sprachvarianten oder modal auch anders bestimmte Varianten moglich Fur Versionsverwaltungssysteme ist die Abkurzung VCS Version Control System gebrauchlich Inhaltsverzeichnis 1 Hauptaufgaben 2 Terminologie 3 Funktionsweise 3 1 Lokale Versionsverwaltung 3 2 Zentrale Versionsverwaltung 3 3 Verteilte Versionsverwaltung 4 Konzepte 4 1 Lock Modify Write 4 2 Copy Modify Merge 5 Objekt basierte Versionierung 6 Beispiele 7 Siehe auch 8 WeblinksHauptaufgaben BearbeitenProtokollierungen der Anderungen Es kann jederzeit nachvollzogen werden wer wann was geandert hat Wiederherstellung von alten Standen einzelner Dateien Somit konnen versehentliche Anderungen jederzeit wieder ruckgangig gemacht werden Archivierung der einzelnen Stande eines Projektes Dadurch ist es jederzeit moglich auf alle Versionen zuzugreifen Koordinierung des gemeinsamen Zugriffs von mehreren Entwicklern auf die Dateien Gleichzeitige Entwicklung mehrerer Entwicklungszweige engl Branch eines Projektes was nicht mit der Abspaltung eines anderen Projekts engl Fork verwechselt werden darf Terminologie BearbeitenEin Branch zu deutsch Zweig ist eine Verzweigung zu einer neuen Version so dass unterschiedliche Versionen parallel im selben Projekt weiterentwickelt werden konnen Anderungen konnen dabei von einem Branch auch wieder in einen anderen einfliessen was als Merging zu deutsch verschmelzen bezeichnet wird Oft wird der Hauptentwicklungszweig als Trunk z B bei Subversion oder Main ehemals Master z B bei Git bezeichnet Branches konnen zum Beispiel fur neue Hauptversionen einer Software erstellt werden oder fur Entwicklungszweige fur unterschiedliche Betriebssysteme oder aber auch um experimentelle Versionen zu erproben Wird ein Zweig in einer neuen unabhangigen Versionsverwaltung erstellt spricht man von einem Fork Ein bestimmter Stand kann auch mit einem Tag einem frei wahlbaren Bezeichner gekennzeichnet werden Funktionsweise BearbeitenDamit die eingesetzten Programme wie z B Texteditoren oder Compiler mit den im Repository engl Behalter Aufbewahrungsort abgelegten Dateien arbeiten konnen ist es erforderlich dass jeder Entwickler sich den aktuellen oder einen alteren Stand des Projektes in Form eines Verzeichnisbaumes aus herkommlichen Dateien erzeugen kann Ein solcher Verzeichnisbaum wird als Arbeitskopie bezeichnet Ein wichtiger Teil des Versionsverwaltungssystems ist ein Programm das in der Lage ist diese Arbeitskopie mit den Daten des Repositorys zu synchronisieren Das Ubertragen einer Version aus dem Repository in die Arbeitskopie wird als Checkout Aus Checken oder Aktualisieren bezeichnet wahrend die umgekehrte Ubertragung Check in Einchecken oder Commit genannt wird Solche Programme werden entweder kommandozeilenorientiert mit grafischer Benutzeroberflache oder als Plugin fur integrierte Softwareentwicklungsumgebungen ausgefuhrt Haufig werden mehrere dieser verschiedenen Zugriffsmoglichkeiten wahlweise bereitgestellt Es gibt drei Arten der Versionsverwaltung die alteste funktioniert lokal also nur auf einem Computer die nachste Generation funktionierte mit einem zentralen Archiv und die neueste Generation arbeitet verteilt also ohne zentrales Archiv Allen gemein ist dass die Versionsverwaltungssoftware dabei ublicherweise nur die Unterschiede zwischen zwei Versionen speichert um Speicherplatz zu sparen Die meisten Systeme verwenden hierfur ein eigenes Dateiformat oder eine Datenbank Dadurch kann eine grosse Zahl von Versionen archiviert werden Durch dieses Speicherformat kann jedoch nur mit der Software des Versionsverwaltungssystems auf die Daten zugegriffen werden die die gewunschte Version bei einem Abruf unmittelbar aus den archivierten Versionen rekonstruiert Lokale Versionsverwaltung Bearbeiten Bei der lokalen Versionsverwaltung wird oft nur eine einzige Datei versioniert diese Variante wurde mit Werkzeugen wie SCCS und RCS umgesetzt Sie findet auch heute noch Verwendung in Buroanwendungen die Versionen eines Dokumentes in der Datei des Dokuments selbst speichern Auch in technischen Zeichnungen werden Versionen zum Beispiel durch einen Anderungsindex verwaltet Zentrale Versionsverwaltung Bearbeiten Diese Art ist als Client Server System aufgebaut sodass der Zugriff auf ein Repository auch uber Netzwerk erfolgen kann Durch eine Rechteverwaltung wird dafur gesorgt dass nur berechtigte Personen neue Versionen in das Archiv legen konnen Die Versionsgeschichte ist hierbei nur im Repository vorhanden Dieses Konzept wurde vom Open Source Projekt Concurrent Versions System CVS popular gemacht mit Subversion SVN neu implementiert und von vielen kommerziellen Anbietern verwendet Verteilte Versionsverwaltung Bearbeiten Die verteilte Versionsverwaltung DVCS 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 Anderungen konnen lokal verfolgt werden ohne eine Verbindung zu einem Server aufbauen zu mussen Im Gegensatz zur zentralen Versionsverwaltung kommt es nicht zu einem Konflikt wenn mehrere Benutzer dieselbe Version einer Datei andern Die sich widersprechenden Versionen existieren zunachst parallel und konnen weiter geandert werden Sie konnen spater in eine neue Version zusammengefuhrt werden Dadurch entsteht ein 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 grosseren Projekten von Personen mit einer Integrator Rolle uberpruft und zusammengefuhrt Systembedingt bieten verteilte Versionsverwaltungen keine Locks Da wegen der hoheren Zugriffsgeschwindigkeit die Granularitat der gespeicherten Anderungen viel kleiner sein kann konnen sie sehr leistungsfahige weitgehend automatische Merge Mechanismen zur Verfugung stellen Eine Unterart der Versionsverwaltung bieten einfachere Patchverwaltungssysteme die Anderungen nur in eine Richtung in Produktivsysteme einspeisen Obwohl konzeptionell nicht unbedingt notwendig existiert in verteilten Versionsverwaltungsszenarien ublicherweise ein offizielles Repository Das offizielle Repository wird von neuen Projektbeteiligten zu Beginn ihrer Arbeit geklont d h auf das lokale System kopiert Konzepte BearbeitenLock Modify Write Bearbeiten Diese Arbeitsweise eines Versionsverwaltungssystems wird auch als Lock Modify Unlock bezeichnet Die zugrunde liegende Philosophie wird pessimistische Versionsverwaltung genannt Einzelne Dateien mussen vor einer Anderung durch den Benutzer gesperrt und nach Abschluss der Anderung wieder freigegeben werden Wahrend sie gesperrt sind verhindert das System Anderungen durch andere Benutzer Der Vorteil dieses Konzeptes ist dass kein Zusammenfuhren von Versionen erforderlich ist da nur immer ein Entwickler eine Datei andern kann Der Nachteil ist dass man unter Umstanden auf die Freigabe eines Dokuments warten muss um eine eigene Anderung einzubringen Zu beachten ist dass Binardateien im Gegensatz zu Quelltextdateien in der Regel diese Arbeitsweise erfordern da das Versionsverwaltungssystem verteilte Anderungen nicht automatisch synchronisieren kann Altester Vertreter dieser Arbeitsweise ist das Revision Control System ebenso bekannt ist Visual SourceSafe Verteilte Versionsverwaltungssysteme kennen systembedingt diese Arbeitsweise nicht Copy Modify Merge Bearbeiten Ein solches System lasst gleichzeitige Anderungen durch mehrere Benutzer an einer Datei zu Anschliessend werden diese Anderungen automatisch oder manuell zusammengefuhrt Merge Somit wird die Arbeit des Entwicklers wesentlich erleichtert da Anderungen nicht im Voraus angekundigt werden mussen Insbesondere wenn viele Entwickler raumlich getrennt arbeiten wie es beispielsweise bei Open Source Projekten haufig der Fall ist ermoglicht dies erst effizientes Arbeiten da kein direkter Kontakt zwischen den Entwicklern benotigt wird Problematisch bei diesem System sind Binardateien da diese oft nicht automatisch zusammengefuhrt werden konnen sofern kein passendes Werkzeug verfugbar ist Manche Vertreter dieser Gattung unterstutzen daher auch alternativ das Lock Modify Write Konzept fur bestimmte Dateien Die zugrunde liegende Philosophie wird als optimistische Versionsverwaltung bezeichnet und wurde entwickelt um die Schwachen der pessimistischen Versionsverwaltung zu beheben Alle modernen zentralen und verteilten Systeme setzen dieses Verfahren um Objekt basierte Versionierung BearbeitenUber die Grenze des abspeichernden Mediums der Datei hinaus geht die Objekt basierte Versionierung Objekte werden in der Informatik als sogenannte Instanzen also Auspragungen eines Schemas erzeugt Auch diese konnen versioniert gespeichert werden Die Versionsverwaltung welche die unterschiedlichen Objektversionen abspeichert muss mit den entsprechenden Objekttypen umgehen konnen Aus dem Grund liest ein solches System nicht allein die Datei und uberpruft diese auf Veranderungen sondern kann die darin enthaltene Semantik interpretieren Ublicherweise werden Objekte dann nicht dateibasiert sondern in einer Datenbank abgespeichert Produktdatenmanagement Systeme PDM Systeme verwalten ihre Daten nach diesem Prinzip Beispiele BearbeitenDie folgende Tabelle enthalt einige Versionsverwaltungssysteme als Beispiele fur die verschiedenen Auspragungsarten Open Source Systeme Proprietare SystemeZentrale Systeme MediaWiki SCCS RCS CVS Subversion SVN Alienbrain Perforce Team Foundation Server Visual SourceSafe ClearCase IBM Rational Synergy PTC Integrity SAP Design Time Repository DTR versiondog fur SPS Roboter Automatisierungsgerate Sourcegear Vault ehem Fortress Verteilte Systeme Bazaar BitKeeper Darcs Fossil Git GNU arch Mercurial Monotone Rational Team ConcertSiehe auch BearbeitenVersionsnummer Versionshinweise Source Code Control System Dokumentenmanagement LogdateiWeblinks BearbeitenVergleich von SVN Git Mercurial und CVS englisch Liste von Versionverwaltungssystemen speziell fur Linux englisch 2004 Versionskontrollsysteme in der Softwareentwicklung 2005 PDF 790 kB Verteilte Versionskontrollsysteme 2009 CRE Einfuhrung in Verteilte Versionsverwaltung englisch Semantic VersioningNormdaten Sachbegriff GND 4202033 5 lobid OGND AKS Abgerufen von https de wikipedia org w index php title Versionsverwaltung amp oldid 226425173