Drei Ursachen für die Verwendung eines VCS in der Softwareentwicklung sind besonders zu nennen:
Software wird von mehreren Personen im Team entwickelt:
Mehrere Personen bearbeiten gleichzeitig, unabhängig voneinander und (manchmal auch) unabgestimmt ein einzelnes Objekt (Quelltextdatei, Dokument etc.) eines Projekts.
Werkzeuge zur Softwareversionsverwaltung helfen, einen solchen Konflikt von vornherein zu vermeiden oder hinterher aufzulösen (Konfliktvermeidung, Konfliktauflösung).
Motivation für ein VCS
Mehrere Versionen einer Software müssen parallel verwaltet werden.
Es entstehen verschiedene "Variationen" derselben Software (Windows):
Bei Fehlern muss die beim Kunden im Einsatz befindliche Version eines Softwareprodukts gewartet werden (Office 2003).
Zeitgleich wird bereits an einer Nachfolgeversion entwickelt (Office 2016).
Der Quelltext der produktiven Version muss jederzeit vorhanden bzw. reproduzierbar sein (Office 2013).
Unterstützung verschiedener Betriebssystemplattformen, Branching (Office for Mac)
Motivation für ein VCS
Änderungen sollen zurückverfolgt werden:
Im Laufe der Zeit entstehen verschiedene Entwicklungsstadien der verwalteten Objekte.
Jeder einzelne Entwicklungsschritt soll auch im Nachhinein lückenlos dokumentiert und wiederholbar sein (Diffs, Deltas).
Webentwicklung - Versionsverwaltung
Strategien zur Versionsverwaltung
Strategien zur Versionsverwaltung
Grundsätzlich werden alle Entwicklungsschritte aller verwalteten Objekte in einer projektorientierten zentralen Datenhaltung (Repository) verwaltet.
File Sharing
Lock-Modify-Unlock (SCCS, RCS)
Lock-Modify-Unlock (SCCS, RCS)
Ein Objekt wird vor jeder Veränderung exklusiv blockiert (lock, check-out), kann danach gefahrlos modifiziert (modify) werden, da kein anderer zu dieser Zeit auf das Objekt zugreifen darf, und wird zuletzt wieder freigegeben (unlock).
Copy-Modify-Merge (ab CVS)
Copy-Modify-Merge (ab CVS)
Ein Objekt muss vor der Veränderung nicht blockiert werden. Es wird lediglich aus dem Repository kopiert (copy). Als Folge daraus kann die Situation entstehen, dass Modifikationen (modify) an einem einzelnen Objekt unabhängig und zeitgleich von mehreren Personen durchgeführt werden.
Copy-Modify-Merge (ab CVS)
Sämtliche Änderungen müssen zunächst mit Unterstützung des Softwareversionswerkzeugs (und Kommunikation zwischen den modifizierenden Personen!) in ein einziges neues Objekt zusammengeführt (merge) werden. Dies nennt man Konfliktauflösung.
Webentwicklung - Versionsverwaltung
Historie der Werkzeuge
Historie der Werkzeuge
Die Historie der Softwareversionsverwaltung ist ähnlich lang wie die der Softwareentwicklung selbst. Drei bedeutende Systeme sind die folgenden:
SCCS (Source Code Control System)
Entstand Anfang der 80er Jahre
War sehr verbreitet unter Unix, aber kommerziell
Exklusives Sperren, Modifizieren und Freigeben (Lock-Modify-Unlock)
Alle Versionsstände (Diffs) einer Datei im selben Verzeichnis
Vergleich nur zwischen zuletzt eingestellter und neuer Dateiversion (Vorwärts-Diff)
Historie der Werkzeuge
RCS (Revision Control System)
Entstand 1985
Ermöglichte den Vergleich beliebiger Dateiversionen (Rückwärts-Diffs)
Wie SCCS exklusives Sperren, Modifizieren und Freigeben
Ohne Lizenzkosten frei verfügbar
Dateiablage transparent in einem werkzeugeigenen Verzeichnis, jedoch alle Projekte in einem einzigen Repository