Code Management mit Subversion

Start presentation

Slide 1: Versionsverwaltung

  • Auflistung der Änderungen an Dokumenten
    • Was war der Zustand des Dokumentes zum Zeitpunkt X?

Slide 2: 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?

Slide 3: CVS

  • Basierend auf RCS
  • OpenSource
  • Netzwerk-fähig
  • Zentralisiert
  • CVS wurde zu einemm Paradebeispiel der OpenSource Bewegung
  • Überholt?!

Slide 4: Versionsverwaltungssysteme

Siehe Wikipedia:List_of_revision_control_software

Slide 5: Subversion im Einsatz

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

Slide 6: 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

Slide 7: 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

Slide 8: 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

Slide 9: Architektur

Subversion Architektur

Slide 10: 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 11: Frontends/Utilities

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

Slide 12: 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 13: 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 14: 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 15: 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 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


Links

-- ChristopherHuhn - 11 Sep 2005
Topic revision: r8 - 2006-04-21, ChristopherHuhn
 
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding GSI Wiki? Send feedback
Imprint (in German)
Privacy Policy (in German)