Subversion (SVN) - Versionieren, Organisieren und Verwalten
Anzeige Hier werben
Subversion (SVN) ist eine Software zur Versionsverwaltung und Organisation von Daten, Verzeichnissen und Dateien. Die Stärken von SVN kommen besonders bei Projekten zu Tage, an denen mehrere Personen arbeiten. Dann können mit Hilfe von Subversion die einzelnen Projektdateien synchronisiert oder auch zusammengefügt werden.
SVN Hoster
Um mit SVN arbeiten zu können benötigt man natürlich einen SVN-Server. Da meistens aber nur Webspace vorhanden ist und man auf diesem keine Software installieren kann muss man auf einen anderen Hoster zurückgreifen. Die Folgenden sind alle kostenlos:
| Besonderheiten |
|
| DevjaVu |
Trac, Wiki |
| BountySource |
Task Tracker, CMS, File Hosting |
| Assembla |
Trac, Wiki, File Hosting |
| Origo |
Wiki, Forum, Blog, Bugtracker, File Hosting |
| Google Code |
Für Open Source Projekte |
| SourceForge |
Für Open Source Projekte |
| berliOS |
Für Open Source Projekte |
| RB Media Group |
Wiki, Forum, Blog, Bugtracker, File Hosting |
SVN Server einrichten
Es wurde ein neuer Artikel erstellt in dem die Einrichtung eines SVN-Servers detailliert beschrieben werden kann. Dieser Artikel ist in der ersten Version noch nicht veröffentlicht worden kann aber bearbeitet werden. Sobald die ersten nennenswerten Änderungen vorgenommen wurden sollte dieser Artikel natürlich veröffentlicht werden und hier der To-Do-Block durch einen einfach Link ersetzt werden.
Hier gehts zum Artikel: --> Kann den Artikel nicht finden. Wo soll dieser sein? (Fabian)
SVN Clients
Der Markt für Subversion-Clients ist in den letzten Jahren immens gewachsen. Generell kann man zwischen drei verschiedenen Arten von Clients unterscheiden. Stand-Alone Clients sind eigene Programme die in keinerlei andere bestehende Software integriert werden. Desktop-Integrierte Clients sind Programme die sich im Betriebssystem integrieren um beispielsweise den Windows Explorer nutzen, um die SVN Dateien zu bearbeiten, synchronisieren und zu durchsuchen. Die dritte Möglichkeit besteht darin Subversion in einer IDE zu integrieren. Dadurch lässt sich Subversion direkt aus der Entwicklungsumgebung aus nutzen.
Stand-Alone Clients
| Name |
Plattform |
Besonderheiten |
| eSvn | Windows, Mac OS X und Unix ähnliche |
Ein auf QT basierendes GUI |
| rapidSVN |
Windows, Mac OS/X und Unix ähnliche |
Ein auf wxWidgets basierendes GUI |
| Versions | Mac OS X |
|
| ZigVersion | Mac OS X |
Desktop integriert
| Name | Plattform |
Besonderheiten | Screenshot |
|---|---|---|---|
| TortoiseSVN |
Windows (2000 SP4, XP, Vista, 7 (x86/x64) oder neuer) |
Windows Shell Erweiterung |
|
| SCPlugin | Mac OS X | ||
| KSvn | Linux |
Konqueror-integrated |
IDE Plugins
| Name | IDE |
| Subclipse | Eclipse |
| Subversive | Eclipse |
| AnkhSVN | Microsoft Visual Studio |
| VisualSVN | Microsoft Visual Studio .NET 2003 & 2005 |
| Aigenta Unified SCC | MSSCCI-kompatible Programme wie z.B. Microsoft Visual Studio |
| WLW-SVN | WebLogic Workshop (8.1.3/8.1.4) |
| CW Subversion | Metrowerks CodeWarrior |
Allgemein
Erklärung von Begriffen wie Arbeitskopie und Repository...
Tags und Branches
Arbeitsablauf
Einleitenden Text hinzufügen
Arbeitskopie aktualisieren
Mit dem update Befehl synchronisiert man die lokale Arbeitskopie mit dem Repository. So erhält man die Änderungen anderer Benutzer. Diesen Befehl sollte man ausführen bevor man etwas ändern möchte. Als Ausgabe erhält man eine Liste aller Änderungen.
1 2 3 4 | $ svn update
U foo.php
A bar.php
Updated to revision 12.
|
Die Art der Änderung wird mittels eines Zeichens vor der entsprechenden Datei gekennzeichnet.
| Zeichen |
Bedeutung |
| U |
Eine Datei wurde aktualisiert. |
| A |
Eine neue Datei oder ein neuer Ordner wurde der Arbeitskopie hinzugefügt. |
| D |
Eine Datei oder ein Ordner wurde aus der Arbeitskopie entfernt. |
| R |
Eine Datei oder ein Ordner wurde ersetzt. |
| G |
Die Datei wurde lokal und serverseitig bearbeitet. Die beiden Dateien wurden zusammengefügt. |
| C |
Die Datei wurde lokal und serverseitig bearbeitet. Konnte jedoch nicht zusammengefügt werden da Überschneidungen auftraten. In diesem Fall muss man das Zusammenfügen manuell machen. |
Änderungen vornehmen
Nachdem man die Arbeitskopie mit update auf den neuesten Stand gebracht hat, kann man Änderungen vornehmen. Diese Änderungen werden zunächst nur lokal vorgenommen und wirken sich erst beim nächsten commit auf das Repository aus. Dazu später mehr.
Datei/Ordner hinzufügen
Um einen Ordner oder eine Datei hinzuzufügen führt man den add Befehl aus.
1 2 | $ svn add foo.bar
A foo.bar
|
Datei/Ordner entfernen
Um einen Ordner oder eine Datei zu entfernen führt man den delete Befehl aus.
1 2 | $ svn delete foo.bar
D foo.bar
|
Datei/Ordner verschieben
Datei/Ordner kopieren/exportieren
1 | svn export -r "Revision(z.B. HEAD)" "Repository/Datei" "Zielordner/Dateiname"
|
Arbeitskopie zurücksetzen
Möchte man eine lokale Arbeitskopie zurücksetzen benutzt man den revert Befehl. Dieser ersetzt die Datei mit der unveränderten Datei im Cache. Es wird dafür keine Verbindung zum Server benötigt.
Änderungen hinzufügen
Um Änderungen an der lokalen Arbeitskopie dem Repository hinzuzufügen benutzt man den commit Befehl.
Revisionen vergleichen (Standard-Diff)
Log-Datei einer Revision auslesen
1 | svn log "Pfad zum Repository/Dateiname" -q
|
Diese Seite kann von jedem registrierten Benutzer bearbeitet werden. Bisher haben 6 Personen an der Seite "Subversion (SVN) - Versionieren, Organisieren und Verwalten" mitgewirkt.
Sie haben einen Fehler entdeckt oder möchten etwas ergänzen? Dann können Sie nach der Anmeldung "Subversion (SVN) - Versionieren, Organisieren und Verwalten" hier bearbeiten.



Fabian Ziegler
Cedric Staub
Alexander Haack
Artikel
Hallo, da ich von SVN kein Plan habe, wollte ich fragen, ob jemand diesen Artikel weiter bearbeiten kann. Einen Klienten habe ich schon, wollte auf Drupal ein Modul bereitstellen, steige durch deren Anleitung noch nicht durch und ein Konto wurde dort mal beantragt aber anscheinend noch nicht genehmigt. Vielen Dank.
Aufteilen
SVN-Server einrichten ist denke ich sehr umfangreich, das würde ich evtl. in eigene Artikel packen. Gerade auch wegen den unterschiedlichen Möglichkeiten einen SVN-Server aufzusetzen (Hinter einem Apache, Direkter Server, ...).
Re: Aufteilen
Achja, die Funktionsweise kann natürlich auch etwas aufgeteilt werden. ;-)
Re: Aufteilen
Also ich würde auch sagen dass das ein neuer Artikel sein sollte. Habe schon ein paar SVN-Server aufgesetzt mit verschiedenen Konfigurationen. Ich finde da sollte man detailiert die einzelnen Möglichkeiten beschreiben.
Wenn einer Mal so einen Artikel anfängt würde ich bestimmt mein Schäflein dazu beitragen. Aber nur Kleinigkeiten. Soviel Zeit habe ich leider nicht dafür.
SVN-Server?
Eine Listung bzw. Beschriebung von Servern wäre nicht schlecht.
Denn manche haben ja einen Server und keinen Webspace ;)
Re: SVN-Server?
"Sie können diese Wikiseite bearbeiten. Helfen Sie mit und verbessern Sie diesen Inhalt mit Ihrem Wissen!" :P
Re: SVN-Server?
Witzbold. Ich hab keine Ahnung von SVN :P