Arbeiten mit SVN

Nach dem Erstellen ist das Repository zunächst leer. Um es mit bereits vorhandenen Dateien zu füllen, benutzen Sie den Befehl svn import. Nennen Sie – wie beim normalen Kopieren von Dateien – Quelle und Ziel des Imports: svn import /home/jploetner/projekte file:///Pfad/zum/Repository -m "initialer Import" übergibt alle Dateien aus dem Verzeichnis Projekte an die Versionsverwaltung. Den Text hinter dem Parameter -m trägt SVN als Kommentar für die Grundversion (Revision 1) der Projektdateien ein.

Von jetzt an Arbeiten Sie nicht mehr mit den Dateien in /home/jploetner/projekte, Sie können das Verzeichnis löschen. Erstellen Sie einen neuen Ordner für die Arbeitskopien (den Checkout) der Projektdateien und wechseln Sie auf der Konsole in das neue Verzeichnis. Auf den Befehl svn checkout file:///Pfad/zum/Repository/ antwortet SVN mit der Meldung Checked out revision 0 und schreibt alle Projektdateien sowie einige Verwaltungsinformationen in einem versteckten Ordner in das aktuelle Verzeichnis. Dies sind die Arbeitskopien aller Dateien aus dem Repository, die Sie wie gewohnt bearbeiten.

Jede Veränderung melden Sie der Versionsverwaltung mit svn commit -m "Kommentar" Pfad/zur/Datei. Nutzen Sie dabei die Möglichkeit, jeder Revision ausführliche Kommentare hinzuzufügen, die die Änderungen dokumentieren. Kommentare sind besonders bei Teamprojekten wichtig, doch auch wenn Sie allein arbeiten, erleichtern sie es, den Überblick über die sich mehrenden Versionen zu behalten.

Möchten Sie dem Projekt eine neue Datei hinzufügen, so erstellen Sie diese zunächst im Arbeitskopien-Ordner. svn add Dateiname teilt der Versionsverwaltung mit, dass Sie diese Datei in Zukunft verwalten soll, schreibt deren Inhalt jedoch noch nicht in die Datenbank. Erst der Befehl svn commit -m "Kommentar" Dateiname übergibt die erste Version an das Repository. svn delete Dateiname löscht eine Datei aus dem Repository, allerdings nicht aus dem Arbeitskopien-Ordner. Erst nach einem Commit verschwindet auch die Arbeitskopie. Beispiele für beide Befehle zeigt Listing 2.

Listing 2

$ svn add artikel2.txt
A      artikel2.txt
$ svn commit -m "Init-Version" artikel2.txt
Adding         artikel2.txt
Transmitting file data .
Committed revision 1.
$ svn delete artikel2.txt
D      artikel2.txt

Mit svn move alterName neuerName benennen Sie Dateien um. SVN löscht die alte Datei und erstellt Sie mit neuem Namen (Listing 3). Anders als bei CVS gehen dabei die Versionsinformationen nicht verloren.

Listing 3

$ svn move neu.txt alt.txt
A       alt.txt
D       neu.txt
$ svn commit -m "Umbennenen von neu.txt in alt.txt"
Adding         alt.txt
Deleting       neu.txt
Transmitting file data .
Committed revision 3.

Nur ein Projekt pro Repository? Das muss nicht so sein. Übergeben Sie SVN, wenn es mehrere Projekte verwalten soll, einfach den projekte-Grundordner, in dem zum Beispiel die Unterordner artikel_user, webprojekt und fotoprojekt liegen. Sie können dann einzelne Projekte auschecken, indem Sie den an den Pfad/zum/Repository noch den Unterordner des jeweiligen Projekts anhängen: svn checkout Pfad/zum/Repository/webprojekt extrahiert nur den Unterordner webprojekt.

SVN ist für die Teamarbeit ausgelegt. Wenn Sie Änderungen, die Ihre Mitstreiter vorgenommen haben, ansehen möchten, holen Sie diese über den Befehl update aus der Datenbank. Bevor Sie dies tun, vergessen Sie nicht, eigene Änderungen mit commit in die Versionshistory zu schreiben. svn update bringt daraufhin das Arbeitsverzeichnis auf den neuesten Stand. Es lädt aber nicht alle, sondern nur die veränderten Dateien herunter. Besonders wenn das Repository auf einem anderen Rechner im Netz steht, ist dies wesentlich effektiver. Möchten Sie nur bestimmte Dateien aktualisieren, so können Sie deren Namen hinter update als Parameter angeben.

Was macht den Unterschied?

Es ist nicht ganz leicht, den Überblick über die Veränderung der Dateien zu behalten. Der Befehl diff zeigt die Unterschiede zwischen der lokalen Arbeitskopie und der Version im Repository. Dies veranschaulicht folgende Beispieldatei neu.txt mit dem Inhalt:

In dieser Datei stehen
drei
Zeilen

Verändern Sie nun den Inhalt der Arbeitskopie der Datei in

In dieser Datei stehen
vier
Zeilen

dann liefert svn diff neu.txt eine Ausgabe, wie sie Listing 4 zeigt. SVN nennt zuerst den Dateinamen, dann die beiden Versionen, die es vergleicht (revision 2 im Repository gegen die working copy). Diff teilt die Datei in Blöcke ein, die es durch Zeilen, die mit @@ enden und beginnen, markiert.

-<§§I>von,bis<§§I> zeigt die Zeilennummern des Blocks in revision 2, +<§§I>von,bis<§§I> die Zeilennummern in der working copy. Der Block wurde nicht verschoben, die Zeilennummern sind daher gleich geblieben. Dass sich der Text drei zu vier verändert hat, symbolisiert SVN durch + und - vor der entsprechenden Zeile.

Listing 4

$ svn diff neu.txt
Index: neu.txt
===================================================================
— neu.txt     (revision 2)
+++ neu.txt     (working copy)
@@ -1,3 +1,3 @@
 In dieser Datei stehen
-drei
+vier
 Zeilen.

Wem diese sogenannte Unified-Diff-Notation zu kompliziert ist, der sollte ein grafisches SVN-Backend benutzen. Abbildung 3 zeigt das gleiche Beispiel in Kdesvn [3]. Der entsprechende Konsolenbefehl lautet svn status Pfad/zum/Arbeitsverzeichnis. Informationen zur Bedeutung der Buchstabensymbole, mit denen SVN die Änderungen dabei kennzeichnet, finden Sie unter [4].

Abbildung 3: Kdesvn bietet eine übersichtliche, grafische Diff-Anzeige.

Eine Alternative zu Kdesvn bieten das Konqueror-Plugin KSvn [5], die Qt-basierten Programme eSvn [6] und QSvn[7] sowie das Java-Programm Jsvn [8]. Auch die Entwicklungsumgebungen Kdevelop und Eclipse (Plugins: Subversive [9] oder Subclipse [10]) integrieren eine graphische SVN-Unterstützung.

Selbstverständlich ist auch ein Vergleich mit älteren Version möglich: svn diff -r Version vergleicht die Arbeitskopie mit der angegebenen Version, svn diff -r Version1:Version2 vergleicht zwei Versionen im Repository.

Anders als bei CVS gelten die Versionsnummern in SVN global: Jeder Commit erhöht die Versionsnummer aller Dateien im Repository. Daher ist es bei SVN nicht möglich, frühere Versionen einzelner Dateien abzurufen: Nur Gesamtzustände des Repositorys vor einem bestimmten Commit lassen sich wiederherstellen (svn update -r Revision). Einzelne Dateien können Sie aber über den Befehl svn cat -r Revision Dateiname anzeigen und über die Umleitung der Befehlsausgabe (svn cat -r Revisionsnummer Dateiname > Dateiname) im Arbeitsverzeichnis speichern. Die Versionsverwaltung zählt diese Datei nach einem erneuten Commit allerdings schlicht als neue Version.

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 11/2017: Server für Daheim

Digitale Ausgabe: Preis € 8,50
(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

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 3 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...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...