Folge mir auf Twitter.

Webentwicklung - Versionsverwaltung

Hochschule für Technik und Wirtschaft Berlin

Dipl.-Inform. Thomas Ziemer

Webentwicklung - Versionsverwaltung

Dipl.-Inform. Thomas Ziemer

Webentwicklung - Versionsverwaltung

Version Control System (VCS)

Was ist ein VCS?

Version Control System

Ein VCS verwaltet über einen Zeitraum hinweg von der Vergangenheit bis zur Gegenwart alle Versionen eines Dokuments, einer Datei, einer Quelltextdatei usw. in einer zentralen Datenhaltung, dem so genannten "Repository".

"Verwalten" heißt in diesem Fall, dass stets alle Versionen des Dokuments zugreifbar sind.

Webentwicklung - Versionsverwaltung

Motivation für ein VCS

Motivation für ein VCS

Drei Ursachen für die Verwendung eines VCS in der Softwareentwicklung sind besonders zu nennen:
  1. 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

  1. 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).

Motivation für ein VCS

  1. Änderungen sollen zurückverfolgt werden:
    • Im Laufe der Zeit entstehen verschiedene Entwicklungsstadien der verwalteten Objekte.

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)

Historie der Werkzeuge

RCS (Revision Control System)

Historie der Werkzeuge

CVS (Concurrent Versions System)

Webentwicklung - Versionsverwaltung

Subversion (SVN)

Subversion (SVN)

Subversionmeant to be a better CVS

Subversion (SVN)

Subversion (SVN)

Puh, fertig!

Nächster Foliensatz...