Home / LinuxUser / 2006 / 10 / Mit CVS oder Subversion Quelltexte verwalten

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(179 Punkte bei 5 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)
Mageia 2 ist fertig
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Ordentliche Buchführung

Mit CVS oder Subversion Quelltexte verwalten

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.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 69 Punkte (1 Stimme)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...