Subversion
für Anfänger und solche, die es noch werden wollen ;)
Alexander R. Krug – (krugar at ipsi punkt fhg punkt de)
Kapitel:
Versionierung
Was und Warum?
- Versionsmanagement ermöglicht einfach Abspeichern ohne zu überschreiben.
- Man hat also zu einer Datei nicht nur die zuletzt gespeicherte Version,
sondern auch alle vorher abgespeicherten Versionen.
- Das Verwalten paraleller Versionen und das Zusammenführen derselben
ist die eigentliche Aufgabe solcher Systeme.
zurück
checkout? commit? head? wtf?
Die wichtigsten Begriffe aus der wundervollen Welt des Versionsmanagements
in einfachem Deutsch
- repository - Die Datensammlung, die svn für einen
verwaltet
- working copy - Die lokale Kopie der Daten aus dem repository,
an der man arbeitet und Veränderungen vornimmt.
- revision - Zustand des repositories zu einem Zeitpunkt.
Jeder commit (kommt später) erzeugt eine neue revision.
- head - Die aktuellste revision
- trunk - Der Stamm des Versionsbaumes
- branch - Ein Ast im Versionsbaum
- tag - revision mit nem Namenszettel dran ;)
- checkout - Sich eine Verzeichnisstruktur mit Daten vom
repository holen, macht man üblicherweise einmal am Anfang.
- update - Sich die Neuerungen zwischen dem mit "checkout"
Heruntergeladenen und dem aktuell auf dem repository Verfügbaren herunterladen.
Damit ist die working copy auf dem aktuellen Stand (wenn man lokal Daten verändert
hat, können merges norwendig werden, siehe unten)
- merge - Einen Konflikt zwischen dem aktuellen head und
einer veralteten, aber lokal veränderten Datei auflösen
- commit - lokal veränderte daten in das repository
hochladen (und damit eine neue revision der daten als head in das repository
legen). Das geht nur, wenn im head keine veränderungen sind, die man
damit überschreiben würde. Gibt es auf repository-seite veränderungen,
muss man diese erst per merge lokal einpflegen, bevor man commiten kann
merge nochmal genauer
zurück
Subversion vs. CVS
Warum nicht auch das nehmen, was alle anderen schon seit Jahren verwenden?
- „atomic commits“ - Wenn eine Transaktion mit dem Subversion
Server unterbrochen wird, bevor sie zuende ist, passiert genau garnichts.
- Man kann Dateien und Verzeichnisse umbenennen und verschieben und Subversion
kommt damit zurecht
- Performanteres Datenbank-Backend
- saubere C-API und anderer Kleinkram
zurück
Subversion - Benutzung und Integration
Integration in Eclipse und IDEA
- IntelliJ IDEA 5.0 bringt eine native Unterstützung mit, für 4.x gibt es ein Plugin
- Für Eclipse 3.x und 2.2+ gibts ein Plugin namens Subclipse
- Womit wohl die meisten JAVA Entwickler glücklich werden sollten...
Standalone Clients
Ye good ole command line
- Als fertige binaries zu haben für Windows, Mac, BSD, Solaris und verschiedene Linuxe
- Zum Scripten und für Anhänger der Alten Schule
- Achtung: für ANT 1.6.x gibts noch keinen brauchbaren ChangeLog Task
zurück
svnserve oder mod_dav_svn - Oder einfach ohne Server?
svnserve
- svnserve ist ein standalone deamon
- Läuft standardmäßig auf tcp port 3690
- Unterstützt User-Authentifizierung mit CRAM-MD5
- Verzeichnisbasierte Zugriffsrechte nur mit schmutzigen Tricks
- Zugriff via URL á la svn://find-meinen.server.net
- Kann unter Unix per inetd gestartet werden
- Unter Windows gibts ein kleines Hilfsprogramm namens SVNservice, das
erlaubt es, den Server als Service zu starten (das spart einem das hässliche
DOS-Fenster)
svnserve + SSH
- svnserve kann auch zusammen mit einem SSH-System benutzt werden, in
dem Fall wird der Server-Prozess vom SSH-Server gestartet
- Vorteil: Quellcode wird verschlüsselt übertragen
- Nachteil: Da der Server-Prozess unter dem mit SSH authentifizierten
Betriebssystem-Benutzer gestartet wird, kann man sich hier mittels Dateirechten
vorzüglich in den Fuß schiessen...
- Zugriff via URL á la svn+ssh://find-meinen.server.net
mod_dav_svn
- Plugin für Apache 2.x
- Authentifizierung erfolgt über Apache, daher auch feingranularere
Zugriffsrechte möglich
- Zugriff via URL á la http(s)://find-meinen.server.net
- Interessant für Server mit mehreren Projekten in einem Repository
oder an Stellen mit restriktiveren Firewalls
Ohne Server
- Für den Hausgebrauch kann man auch auf den Server verzichten.
- Der svn Client kann über einen file://-URL direkt auf das Repository
zugreifen
- Vorteil: weniger arbeit beim aufsetzen
- Nachteil: wenn mehrere Rechner (zB über Samba oder NFS) Zugriff
auf das Repository haben sollen, kann man das Berkerly DB Backend nicht nutzen
und muss mit dem FSFS Backend Vorlieb nehmen. (es sei denn, man hat eine Share,
die strikte POSIX-konforme file locks bietet...)
Oder doch lieber... alle?
- Man kann mehrere Server-Prozesse gleichzeitig auf einem Repository laufen
lassen, die Datenbank kommt damit zurecht.
zurück
cvs2svn
was es kann und was es braucht
- Braucht Phyton 2.0+, GNU Sort und entweder den RCS co Client (schneller)
oder einen CVS Client (langsamer, aber es gibt Spezialfälle, wo der nötig
ist)
- Kann nur mit direktem Dateisystem-Zugriff auf das CVS Repository benutzt
werden (!)
- Kann ganze Subversion-Repositories oder Dumpfiles erstellen, oder Daten
in ein existierendes Repository einpflegen
- Auswahlmöglichkeiten umfassen head-only, trunk-only, einzelne Unterverzeichnisse,
einfach alles, oder oder...
zurück
Links
zurück