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
      1. lock. modify, unlock
        • der alte Ansatz (RCS)
      2. 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?!

Versionsverwaltungssysteme

Siehe Wikipedia:List_of_revision_control_softwarewikipedia

Subversion im Einsatz

OpenSource-Projekte, die Subversion verwendenwikipedia:
  • Apache
  • CUPS
  • Debian
  • GnuPG
  • KDE
  • Samba
  • TWiki smile
  • Zope

Subversion

  • CVS v2: Eine OpenSource Versionsverwaltung entworfen als Nachfolger von CVS
    1. Design und Bedienung orientieren sich stark an CVS
    2. 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

Architektur

Subversion Architektur

Branching, Merging, Tagging

  • Branches werden per svn copy erzeugt.

  • Zum Vereinigen verschiedener Zweige wird svn merge verwendet * Änderungen können mehrfach übernommen werden

  • Tags
    1. Sprechender Name für eine bestimmte Revision
    2. Snapshot einer Arbeitskopie per svn copy

Slide 10 of 16

Frontends/Utilities

  • GUIs
  • Web-Frontends
    • WebSVN
    • ViewCVS
    • Trac
    • ...
  • Editor-Integration

Slide 11 of 16

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

Slide 12 of 16

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

Slide 13 of 16

Server-Setup - Hooks

Hook Wann Wozu
start-commit vor dem Beginn eines commit Zugriffskontrolle
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
pre-revprop-change vor der Änderung nicht-versionierter Meta-Daten Zugriffskontrolle
post-revprop-change nach der Änderungen nicht-versionierter Meta-Daten Backup

Slide 14 of 16

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)

Slide 15 of 16

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

Slide 16 of 16