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 12/2016: Neue Desktops

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

Drucker Epson XP-332 unter ubuntu 14.04 einrichten
Andrea Wagenblast, 30.11.2016 22:07, 2 Antworten
Hallo, habe vergeblich versucht mein Multifunktionsgerät Epson XP-332 als neuen Drucker unter...
Apricity Gnome unter Win 10 via VirtualBox
André Driesel, 30.11.2016 06:28, 2 Antworten
Halo Leute, ich versuche hier schon seit mehreren Tagen Apricity OS Gnome via VirtualBox zum l...
EYE of Gnome
FRank Schubert, 15.11.2016 20:06, 2 Antworten
Hallo, EOG öffnet Fotos nur in der Größenordnung 4000 × 3000 Pixel. Größere Fotos werden nic...
Kamera mit Notebook koppeln
Karl Spiegel, 12.11.2016 15:02, 2 Antworten
Hi, Fotografen ich werde eine SONY alpha 77ii bekommen, und möchte die LifeView-Möglichkeit nu...
Linux auf externe SSD installieren
Roland Seidl, 28.10.2016 20:44, 1 Antworten
Bin mit einem Mac unterwegs. Mac Mini 2012 i7. Würde gerne Linux parallel betreiben. Aber auf e...