Systemaufbau
Das zentrale Archiv wird als Repository (engl. Behälter, Aufbewahrungsort) bezeichnet. Die meisten Systeme verwenden hierfür ein eigenes Dateiformat (oder eine Datenbank). Die Versionsverwaltungssoftware speichert dabei üblicherweise nur die Unterschiede zwischen zwei Versionen, um Speicherplatz zu sparen. 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. Solche Software ist häufig als Client-Server-System aufgebaut, sodass der Zugriff auf ein Repository auch über Netzwerk erfolgen kann.
Theoretisch lässt sich jedes Dokument versionieren. In der Praxis jedoch werden die komplizierten Verfahren der Versionskontrolle nur selten außerhalb der Softwareentwicklung eingesetzt.
Damit die in der Softwareentwicklung eingesetzten Programme wie z. B. Compiler mit den im Repository 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 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 Übertragen einer Version aus dem Repository in die Arbeitskopie wird als Checkout oder Aktualisieren bezeichnet, während die umgekehrte Übertragung Checkin oder Commit genannt wird. Solche Programme sind entweder kommandozeilenorientiert, mit grafischer Benutzeroberfläche oder als Plugin für integrierte Softwareentwicklungsumgebungen ausgeführt. Häufig werden mehrere dieser verschiedenen Zugriffsmöglichkeiten wahlweise bereitgestellt.
Hauptaufgaben eines Versionsverwaltungssystems
- Protokollierungen der Änderungen: Es kann jederzeit nachvollzogen werden, wer wann was geändert hat.
- Wiederherstellung von alten Ständen einzelner Dateien: Somit können versehentliche Änderungen jederzeit wieder rückgängig gemacht werden.
- Archivierung der einzelnen Release-Stände eines Projektes: Dadurch ist es jederzeit möglich auf alle ausgelieferten Versionen zuzugreifen.
- Koordinierung des gemeinsamen Zugriffs von mehreren Entwicklern auf die Dateien
- Gleichzeitige Entwicklung mehrerer Entwicklungszweige (engl. Branches) eines Projektes (z. B. stabile Release-Version und Entwicklerversion mit größeren, nicht getesteten Änderungen): Hier wird der Entwickler bei der Übernahme von einzelnen Änderungen zwischen den Zweigen und der Hauptversion unterstützt.
Arbeitsweisen der Versionsverwaltung
Lock Modify Write
Dies ist die traditionelle Arbeitsweise eines Versionsverwaltungssystems und wird auch als Lock Modify Unlock bezeichnet. Die zugrundeliegende Philosophie wird auch Pessimistic Revision Control (engl., Pessimistische Versionskontrolle) 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 anderer Benutzer. Bekanntester und ältester Vertreter dieser Arbeitsweise ist das Revision Control System (kurz: RCS) von Walter F. Tichy.
Copy Modify Merge
Ein solches System lässt gleichzeitige Änderungen mehrerer 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 mehrere Entwickler räumlich getrennt arbeiten, wie es beispielsweise bei Open-Source Projekten der Fall ist, ermöglicht dies deutlich flüssigeres Arbeiten.
Die zugrundeliegende Philosophie wird als Optimistic Revision Control (engl., Optimistische Versionskontrolle) bezeichnet und wurde entwickelt um die Schwächen der Pessimistic Revision Control (engl., Pessimistische Versionskontrolle) zu beheben. Bekanntester Vertreter ist das Concurrent Versions System (kurz: CVS).
Siehe auch
Weblinks