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