Mit CVS oder Subversion Quelltexte verwalten

Ordentliche Buchführung

,
Versionsverwaltung ist weder kompliziert noch ausschließlich für Programmierer gedacht: Tools wie Subversion archivieren unkompliziert alle Dateien, von denen es unterschiedliche Versionen gibt.

CVS [1] steht für Concurrent Versions System, SVN für Subversion [2]. Bei beiden handelt es sich um Versionsverwaltungen, mit denen zum Beispiel Entwicklerteams ihre Arbeit am Programmcode koordinieren und den Codebestand verwalten. Die CVS- oder auch SVN-Version eines Programms ist also diejenige Version, die selbst Änderungen der letzten Minuten enthält – mit den bekannten Auswirkungen auf die Stabilität.

Die Hauptaufgabe der Versionskontrolle besteht darin, die unterschiedlichen Varianten der oft zahlreichen Dateien eines Projekts übersichtlich und in ihrer Entstehungsgeschichte nachvollziehbar aufzubewahren. Besonders wichtig ist das bei Programmierprojekten, wo eine kleine Modifikation oft viele, schwer vorherzusehende Auswirkungen hat.

Doch es spricht nichts dagegen, diese zusätzliche Sicherheit auch in ganz anderen Bereichen zu nutzen: Bei kreativen Arbeiten wie beim Schreiben oder beim Bildbearbeiten fördert sie die Spontaneität – die früheren Versionen sind ja nicht verloren.

Bearbeiten Sie in Gimp nur eine einzelne Datei, mag es genügen, neue Versionen jeweils unter einem neuen Namen zu speichern. Doch echte Versionkontrolle bietet einige Vorteile (Abbildung 1): So erlaubt es die Software, jede Version mit einem, wenn nötig, längeren Kommentar versehen. Außerdem liegen die vielen Dateiversionen, solange Sie sie nicht brauchen, in der Datenbank und erschweren so nicht die Übersicht.

Abbildung 1: Zu jeder Datei sehen Sie in SVN und CVS einen Logeintrag mit allen Änderungen, Äderungsdatum und dem Namen des Bearbeiters. Bei sich überschneidenden Änderungen meldet das Tool einen Konflikt und stellt die konkurrierenden Teile einander gegenüber.

Bei CVS und SVN handelt es sich um frei verfügbare Tools, die auf fast allen relevanten Betriebssystemen laufen – darunter Linux und BSD, aber auch Windows, Mac OS X, BeOS und OS/2. SVN, im Jahr 2000 von CollabNet entwickelt, versteht sich als Nachfolger von CVS und übernimmt größtenteils dessen Features, bringt jedoch eine Reihe von Verbesserungen mit. Die wichtigste ist, dass sich Dateien in einem mit SVN verwalteten Verzeichnisbaum verschieben und umbenennen lassen, während dies bei CVS noch nicht möglich war, ohne dass die Versionsinformationen verloren gingen.

Grundlagen

So funktioniert das Arbeiten mit einer Versionsverwaltung: Um auf die Dateien, die zunächst nur in der Datenbank liegen, zugreifen zu können, steht ganz am Anfang der sogennannte Checkout (Befehl: svn checkout). Die Versionsverwaltung kopiert dabei alle Projektdateien in ein lokales Verzeichnis. Die Verzeichnisse .svn beziehungsweise CVS enthalten Verwaltungsinformationen, die der Benutzer nicht verändern darf.

Arbeiten Sie im Team, so laden Sie mit einem Update (svn update) die Änderungen, die andere Benutzer in die Datenbank der Versionsverwaltung übertragen haben. Ein Commit (svn commit) hingegen speichert eigene Änderungen in der Datenbank, dem so genannten Repository (Abbildung 2).

Arbeiten mehrere Entwickler an einem Projekt, so kommt es natürlich vor, dass mehrere Personen gleichzeitig die selbe Datei verändern. Hier zeigt sich erst die eigentliche Stärke einer Versionsverwaltung: Greifen mehrere Personen ohne Versionsverwaltung auf eine Datei zu, so überschreiben sie häufig die Änderungen der anderen. Zumindest für Textdateien in CVS und SVN gilt: Betreffen gleichzeitige Änderungen unterschiedliche Stellen in der Datei, so fügt die Versionsverwaltung das Resultat automatisch richtig zusammen.

Auch wenn dies bei Binärdateien oder bei sich überschneidenden Änderungen nicht funktioniert, verhindert SVN mit der Meldung Datei bleibt in Konflikt zumindest das wechselseitige Überschreiben. Im Arbeitsverzeichnis liegen dann, wie in Abbildung 1 zu sehen, unverändert die von Ihnen bearbeitete Version (aepfel.png), die Version des Teamkollegen (aepfel.png.r5), sowie die Revision, auf der beide Änderungen basieren (aepfel.png.r4). Die Versionsverwaltung kennzeichnet die Dateien durch Anhängen der Revisionsnummer an den Dateinamen.

Abbildung 2: Ein zentrales Versions-Repository verwaltet die Arbeit mehrerer Benutzer. Das Repository enthält alle Versionen der Dateien und Daten wie Logmeldungen. In den Arbeitskopien liegen nur die aktuellen Versionen, um das Bearbeiten nicht zu erschweren.

SVN-Repository einrichten

Im Folgenden beschränkt sich der Artikel auf die Beschreibung des moderneren und leistungsfähigeren SVN. Wenn in vielen Open-Source-Projekten noch immer CVS zum Einsatz kommt, dann meist vor allem aus Tradition.

Voraussetzung für das Arbeiten mit SVN ist das Programmpaket subversion. Um Subversion nutzen zu können, richten Sie zuerst mit svnadmin create /Pfad/zum/Repository ein Repository ein. Listing 1 zeigt den Befehl und die Verzeichnisstruktur, die im neu angelegten Repository entsteht. Es dient als Container für die Projektdateien.

SVN nutzt zum Speichern jedoch eine Datenbank (Berkley DB), so dass die Dateien auch bei gefüllten Repositories nicht im Dateisystem erscheinen. Dennoch muss jeder Nutzer, der auf das Repository zugreift, Schreib- und Leserechte besitzen. Außerdem arbeitet die Datenbank nur korrekt, wenn das Repository-Verzeichnis nicht über ein Netzwerkdateisystem eingebunden ist. Diese Einschränkung lässt sich umgehen, wenn Sie svnadmin-beim Erstellen des Repositorys mit dem zusätzlichen Parameter --fs-type fsfs aufrufen.

Listing 1

$ svnadmin create /home/jploetner/SVN
$ ls /jploetner/SVN
README.txt
conf/
dav/
db/
format
hooks/
locks/

LinuxCommunity kaufen

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

Deutschland

Ähnliche Artikel

  • Vorher und nachher
    Wer Textdateien, wie etwa Konfigurations-, Programmquellcode- oder Skriptdateien, regelmäßig überarbeitet, sollte eine Versionsverwaltung nutzen, um auch auf alte Versionen zurückgreifen zu können: Dann bleiben Fehler beim Überarbeiten folgenlos.
  • PHP-Programmierung mit Eclipse
    Das Plugin PHPEclipse bringt der Java-Entwicklungsumgebung Eclipse die Skriptsprache PHP bei, Subclipse sorgt für eine Einbindung von SVN. Heraus kommt eine komfortable Umgebung für die Entwicklung dynamischer Webseiten in PHP.
  • 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.
  • Nicht nur für Quelltexte: Versionsverwaltung mit Git
    Arbeiten mehrere Personen zusammen an Quelltexten oder Dokumenten, artet das schnell in Gewurstel aus. Hier schafft Git schnell Abhilfe: Die verteilte Versionsverwaltung sorgt mit minimalem Aufwand zuverlässig für die Integrität und Konsistenz der Daten.
  • Subversion für Anfänger
    Nicht nur Programmierer kennen das Problem: Sobald es mehrere Versionen einer Datei gibt, bricht Chaos aus. Subversion steuert dagegen.
Kommentare

Infos zur Publikation

LU 12/2017: Perfekte Videos

Digitale Ausgabe: Preis € 5,95
(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!

Stellenmarkt

Aktuelle Fragen

Broadcom Adapter 802.11n nachinstallieren
Thomas Mengel, 31.10.2017 20:06, 2 Antworten
Hallo, kann man nachträglich auf einer Liveversion, MX Linux auf einem USB-Stick, nachträglich...
RUN fsck Manually / Stromausfall
Arno Krug, 29.10.2017 12:51, 1 Antworten
Hallo, nach Absturz des Rechners aufgrund fehlendem Stroms startet Linux nicht mehr wie gewohn...
source.list öffnet sich nicht
sebastian reimann, 27.10.2017 09:32, 2 Antworten
hallo Zusammen Ich habe das problem Das ich meine source.list nicht öffnen kann weiß vlt jemman...
Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 6 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...