Versionsverwaltung
- Auflistung der Änderungen an Dokumenten
- Was war der Zustand des Dokumentes zum Zeitpunkt X?
Software Configuration Management (SCM)
- Ein Projekt besteht aus einer Menge von Modulen/Dokumenten/Dateien
- Gleichzeitiges Bearbeiten
- Zentrales Repository, lokale Arbeitskopien
- lock. modify, unlock
- copy, edit, merge
- der modernere Ansatz (CVS)
- Was war der Zustand des Dokumentes zum Zeitpunkt X?
- Wer hat wann welche Änderungen an datei
foo/bar
durchgeführt?
CVS
- Basierend auf RCS
- OpenSource
- Netzwerk-fähig
- Zentralisiert
- CVS wurde zu einemm Paradebeispiel der OpenSource Bewegung
- Überholt?!
Subversion
- CVS v2: Eine OpenSource Versionsverwaltung entworfen als Nachfolger von CVS
- Design und Bedienung orientieren sich stark an CVS
- Die wesentlichsten Schwächen von CVS wurden beseitigt
- Keine epochal neuer Ansatz zur Versionsverwaltung
CVS vs. SVN
|
CVS |
SVN |
Verwaltet |
Dateien |
Dateibäume (d. h. Dateien und Verzeichnisse) |
Revisionsnummern |
per Datei |
per Repository |
Branches/Tags |
RCS |
Filesystem |
Vergleiche |
diff |
Binär/Text (automatische Erkennung) |
zusätzliche Subversion-Features
- Atomarer
commit
-
Rename/move
und copy
Operationen
- Caching und verbindungslose Operationen (
status
, diff
, revert
)
- Verwaltung von Metadaten
- Konflikte müssen explizit aufgelöst werden
- Anonymer Zugriff über Apache/WebDAV möglich
CVS vs. SVN
cvs |
svn |
checkout (co ) |
update (up ) |
add |
remove (rm ) |
commit (ci ) |
diff |
status |
log |
admin |
- (eigenes svnadmin Kommando) |
rdiff |
??? |
|
propget , proplist , propedit , propdel |
|
mkdir , copy , move |
|
blame |
|
resolved , revert |
|
switch |
|
blame |
Branching, Merging, Tagging
- Branches werden per
svn copy
erzeugt.
- Zum Vereinigen verschiedener Zweige wird
svn merge
verwendet * Änderungen können mehrfach übernommen werden
- Tags
- Sprechender Name für eine bestimmte Revision
- Snapshot einer Arbeitskopie per
svn copy
Frontends/Utilities
- GUIs
- Web-Frontends
- Editor-Integration
Frontends/Utilities
- Konverter
-
cvs2svn
: Einmal-Konverter von CVS nach SVN
-
vss2svn
: Konverter von MS Visual Source Safe nach Subversion (Entwicklung abgebrochen?)
- Sonstiges
- svnmailer - Komplexes Email-Benachrichtigungssystem
Server-Setup
Apache2 mit
mod_dav
und
mod_dav_svn
- SSL-Versschlüsselung mit
mod_ssl
- Authentifizierung über beliebige
mod_auth_*
Module
-
mod_auth_pam
- Authentifizierung gegen System-Accounts
-
mod_auth_ldap
, mod_auth_*sql
et al. - Authentifizierung gegen Directory oder Datenbank
-
mod_ssl
- Authentifizierung mit SSL-Client-Zertifikaten (X509)
- Zugriffskontrolle über
- Apache-Konfiguration
-
mod_authz_svn
plus Zugriffsdatei
- Eingebauter Lesezugriff auf die neueste Revision
Server-Setup - Hooks
Hook |
Wann |
Wozu |
post-revprop-change |
nach der Änderungen nicht-versionierter Meta-Daten |
Backup |
pre-commit |
nach der Übertragung der Daten aber vor dem Abschluss der Transaktion (Abbruch möglich) |
Syntax-Validierung, Check der Log-Meldung |
post-commit |
nach dem Abschluss der Transaktion |
Verschicken von Benachrichtigungen, Backup/Replikation |
start-commit |
vor dem Beginn eines commit |
Zugriffskontrolle |
pre-revprop-change |
vor der Änderung nicht-versionierter Meta-Daten |
Zugriffskontrolle |
GSI Setup
- Repository der LinuxGroup
- Authentifizierung gegen (Linux-)System-Accounts (NIS)
- Repository-weite Zugriffsbeschränkung auf die LinuxGroup
-
post-commit
Hook:
- Email-Notification
- Backup (
svnadmin dump | adsmpipe
)
Ausblick
- Distributed Version Control Systems
- Changesets statt Snapshots
- Was ist die Kernaufgabe eines SCM?
- Intelligentes Merging
- Zusammenführen von Teilbäumen leichter mit Changesets?
- Besser geeignet für OpenSource-Projekte