Aufmacher

Versionen verwalten

Subversion für Anfänger

Nicht nur Programmierer kennen das Problem: Sobald es mehrere Versionen einer Datei gibt, bricht Chaos aus. Subversion steuert dagegen.

Sobald Sie über das lokale Netzwerk oder das Internet mit mehreren Menschen an einem Projekt arbeiten, kommt es zur Konfusion: An welcher Datei arbeitet der Kollege eigentlich gerade, ist das jetzt meine letzte Version der Datei? Die meisten Menschen basteln in Handarbeit eine Notlösung, um wenigstens Veränderungen in den eigenen Dateien im Blick zu behalten. Macht das jeder, dann gibt es am Ende 20 Bastel-"Lösungen" – und noch immer weiß niemand, woran der Nachbar gerade arbeitet.

Eine Versionierungssoftware wie Subversion (kurz SVN) [1] (Abbildung 1) behält die Übersicht und nimmt Ihnen diese Arbeit ab. Sie müssen zwar ein paar neue Befehle lernen, das Wissen hilft Ihnen aber auch in anderen Situationen, etwa:

  • wenn Sie auf einer Webseite den lapidaren Satz lesen, dass Sie die neueste Version der Software ja "aus dem SVN ziehen können";
  • wenn Sie kein Programmierer sind, sondern Texte schreiben, Rechnungen verwalten oder Projekte am Computer planen;
  • wenn Sie Zwischenstände Ihrer Dateien aufbewahren wollen.
Abbildung 1: Sie können Subversion auch aus dem Quellcode selbst kompilieren, die meisten Distributionen stellen aber fertige Pakete bereit.

Bei SVN handelt es sich um eine Antwort auf CVS (Concurrent Versions System) [2], eine in Entwicklerkreisen weit verbreitete und nach wie vor beliebte Versionierungsverwaltung. Subversion will die Mängel von CVS beheben und steht unter einer Apache/BSD-Lizenz.

Alles ist ein Kreis

Subversion generiert gewöhnlich ein Projektarchiv (das Subversion-Repository) auf das unterschiedliche viele SVN-Clients zugreifen. Sie können das Archiv auch mittels Apache und dem Modul mod_dav_svn als Server auf einem Rechner im Internet betreiben, etwa bei Freshmeat.net oder Sourceforge.net. Arbeiten Sie allein, richten Sie am besten ein lokales Subversion-Archiv auf Ihrem Rechner ein.

Zunächst legen Sie ein Repository an. Dieses verstaut dann die zu bearbeitenden Dateien in einer internen Datenbank. Standardmäßig nutzt SVN zwar mittlerweile die FSFS-Datenbank – einige Nutzer setzen aber noch auf die ältere Berkeley-Database.

Zum Bearbeiten der Daten fordern die SVN-Clients zunächst eine Arbeitskopie beim Subversion-Archiv an ("Checkout") und legen diese auf dem lokalen Rechner ab. Sie modifizieren die Dateien und pflegen sie dann wieder in das Projektarchiv ein, was unter dem Begriff "Commit" firmiert (Abbildung 2). Subversion schaut sich die veränderten Dateien an und verteilt – so es keine Konflikte gibt – neue Revisionsnummern (siehe Kasten "Revisionismus").

Abbildung 2: So sieht – stark vereinfacht – die Arbeit mit einem SVN-Archiv aus: Checkout, Bearbeiten, Update, Commit.

Revisionismus

Sobald eine neue Datei im Repository landet, erhalten sämtliche Ordern und Dateien eine neue, ganzzahlige Revisionsnummer. In der lokalen Arbeitskopie existieren indes mitunter mehrere Revisionen nebeneinander. Ein globaler Update-Befehl bringt auch hier sämtliche Dateien auf den letzten Stand. Der Befehl svn co -r# http://mysvn.dyndns.org/svn/trunk arbeitskopie dreht die Uhr zurück und holt eine alte Revision aus dem Repository, wobei Sie das # durch die Nummer der Revision ersetzen.

Jeder darf sich ohne falsche Skrupel beliebig viele Arbeitskopien vom Server holen und diese verändern – so lange die Betreiber des Repositories das nicht mit Hilfe von Passwörtern verhindern. Subversion ficht das nicht an. Es interessiert sich erst für die Daten, wenn Sie versuchen, diese wieder einzuchecken. Die meisten freien Projekte erlauben jedem das Auschecken, Einchecken dürfen hingegen nur angemeldete Entwickler.

Statt Veränderungen blind zu übernehmen, prüft Subversion, ob es mittlerweile eine neue Version der Software gibt. Daher bringen Sie als Entwickler Ihre Daten vor dem Einchecken über ein Update auf den neuesten Stand. Denn bastelt genau in diesem Augenblick ein anderer Entwickler an derselben Datei wie Sie, womöglich am gleichen Problem, kommt es zum Konflikt. Subversion sieht nun zwei Versionen derselben Datei und weiß nicht, welche es übernehmen soll. Also lehnt es die Übermittlung ab, markiert die beiden Stellen im Code (Abbildung 3) und überlässt es den Entwicklern, das weitere Vorgehen zu klären. Ohne direkte Kommunikation geht es also mitunter doch nicht.

Abbildung 7: Zwei Kommentar überschneiden sich zufällig. Das Problem lässt sich leicht lösen, danach geben Sie svn resolved ein.

Schema F

SVN schert sich nicht darum, was für Daten es verwaltet. Allerdings gibt es Konventionen, denen die meisten Subversion-Archive folgen. In den Repositories begrüßen einen deshalb drei Ordner namens trunk, tags und branches (Abbildung 4). Unter trunk finden Sie die aktuelle Version der Software, an der Sie gewöhnlich arbeiten. Gibt es irgendwann eine stabile Zwischenversion, kopieren Sie diese über svn copy trunk tags/version-0.1 in den Ordner tags, dorthin gehören also Zwischenstände. Im Verzeichnis branches bilden die Entwickler Zweige, das heißt, hier entwickeln sie Ableger der Trunk-Version parallel weiter. Diese Versionen dienen der Fehlersuche (Bugfix), der Erprobung von Updates oder für Experimente.

Abbildung 4: Für die Struktur von Subversion-Repositories haben sich als Konvention drei Ordner namens Trunk, Tags und Branches durchgesetzt.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Mehrere Dokumentversionen verwalten
    Datensicherung bringt Ihnen verlorene Dateien zurück – aber nur in der letzten Version. Für Dateien, an denen Sie regelmäßig größere Umbauten vornehmen, ist darum auch eine Versionsverwaltung nützlich.
  • ViewVC 1.1.0 mit neuen Features
    Mit ViewVC lassen sich Subversion- und CVS-Repositories bequen per Browser durchsuchen. Die neue Version 1.1.0 bringt zahlreiche Verbesserungen mit

  • Mit CVS oder Subversion Quelltexte verwalten
    Versionsverwaltung ist weder kompliziert noch ausschließlich für Programmierer gedacht: Tools wie Subversion archivieren unkompliziert alle Dateien, von denen es unterschiedliche Versionen gibt.
  • Der feine Unterschied
    Linus Torvalds persönlich schneiderte seinem Betriebssystem das Versionskontrollsystem Git auf den Leib. Damit lässt sich aber nicht nur der Kernel verwalten, Sie können damit auch Ihre eigene Projekte pflegen.
  • Team-Player
    Teamarbeit stützt sich häufig auf E-Mail als primäres Arbeitswerkzeug, da komplette Groupware-Lösungen viel Zeit und Fachkenntnis bei der Installation und Konfiguration voraussetzen. Die Teamarbeitssoftware Mindquarry hat sich das Ziel gesetzt, diese Probleme zu lösen.
Kommentare

Infos zur Publikation

LU 09/2016: Ciao, Windows!

Digitale Ausgabe: Preis € 5,99
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Aktuelle Fragen

Scannen nicht möglich
Werner Hahn, 19.08.2016 22:33, 3 Antworten
Laptop DELL Latitude E6510 mit Ubuntu 16,04, Canon Pixma MG5450. Das Drucken funktioniert, Scann...
Wie kann man das berichtigen
Udo Muelle, 17.07.2016 20:39, 1 Antworten
Fehlschlag beim Holen von http://extra.linuxmint.com/dists/rosa/main/binary-i386/Packages Hash-S...
Installation Genimotion
Horst Müller, 15.07.2016 17:00, 1 Antworten
Hallo, ich kann Genimotion nicht installieren. Folgende Fehlermeldung habe ich beim Aufruf erh...
Probleme beim Hochfahren der Terastaion 5400 mit Unix-Distrib
Sheldon Cooper, 10.07.2016 09:32, 0 Antworten
Hallo ihr lieben, habe seit zwei Tagen das Problem, das das NAS (Raid5) nicht mehr sauber hoch...
Mit Firewire Videos improtieren?
Werner Hahn, 09.06.2016 11:06, 5 Antworten
Ich besitze den Camcorder Panasonic NV-GS330, bei dem die Videos in guter Qualität nur über den 4...