24
Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – [email protected]

Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – [email protected]

Embed Size (px)

Citation preview

Page 1: Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – krugar@ipsi.fhg.de

Subversion

für Anfänger und solche, die es noch werden wollen ;)

Alexander R. Krug – [email protected]

Page 2: Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – krugar@ipsi.fhg.de

Module dieses Vortrages

• Was ist Versionierung und wozu ist das gut?• Terminologie• Warum Subversion und nicht CVS?• Wie benutze ich Subversion?• Wie setze ich einen Server auf?• Wie migriere ich von CVS nach Subversion?• Links

Page 3: Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – krugar@ipsi.fhg.de

Versionierung

Was und Warum?

Page 4: Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – krugar@ipsi.fhg.de

Versionsmanagement

• 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.

Page 5: Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – krugar@ipsi.fhg.de

checkout? commit? head? wtf?

Die wichtigsten Begriffe aus der wundervollen Welt des

Versionsmanagements in einfachem Deutsch

Page 6: Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – krugar@ipsi.fhg.de

checkout? commit? head? wtf?

• 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 ;)

Page 7: Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – krugar@ipsi.fhg.de

wtf? contd.

• 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

Page 8: Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – krugar@ipsi.fhg.de

merge nochmal genauer

Page 9: Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – krugar@ipsi.fhg.de

Subversion vs. CVS

Warum nicht auch das nehmen, was alle anderen schon seit

Jahren verwenden?

Page 10: Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – krugar@ipsi.fhg.de

Warum lieber Subversion?

• „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

Page 11: Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – krugar@ipsi.fhg.de

Subversion

Benutzung und Integration

Page 12: Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – krugar@ipsi.fhg.de

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 ( subclipse.tigris.org )

• Womit wohl die meisten JAVA Entwickler glücklich werden sollten...

Page 13: Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – krugar@ipsi.fhg.de

Standalone Clients

• Für Windows: TorquoiseSVN

• Für alle (dank JAVA): SmartSVN

Page 14: Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – krugar@ipsi.fhg.de

Ye good ole command line

• 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 (was mich den restlichen Nachmittag noch beschäftigen wird >.< )

Page 15: Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – krugar@ipsi.fhg.de

svnserve oder mod_dav_svn

Oder einfach ohne Server?

Page 16: Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – krugar@ipsi.fhg.de

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)

Page 17: Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – krugar@ipsi.fhg.de

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...

Page 18: Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – krugar@ipsi.fhg.de

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...

• Interessant für Server mit mehreren Projekten in einem Repository oder an Stellen mit restriktiveren Firewalls

Page 19: Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – krugar@ipsi.fhg.de

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...)

Page 20: Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – krugar@ipsi.fhg.de

Oder doch lieber... alle?

• Man kann mehrere Server-Prozesse gleichzeitig auf einem Repository laufen lassen, die Datenbank kommt damit zurecht.

Page 21: Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – krugar@ipsi.fhg.de

cvs2svn

was es kann und was es braucht

Page 22: Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – krugar@ipsi.fhg.de

cvs2svn

• 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...

Page 23: Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – krugar@ipsi.fhg.de

Links

• Das hier als Website für alle Schreibfaulen: http://krugar.de/stuff/svn-intro/

• Allgemeine Entscheidungshilfen für Versionierungssoftware auf Deutsch: http://better-scm.berlios.de/

• Subversion: http://subversion.tigris.org• Das Subversion-Buch: http://svnbook.red-bean.com/• TortoiseSVN: http://tortoisesvn.tigris.org/• SmartSVN: http://www.smartcvs.com/smartsvn/• Subclipse: http://subclipse.tigris.org

Page 24: Subversion für Anfänger und solche, die es noch werden wollen ;) Alexander R. Krug – krugar@ipsi.fhg.de

FIN

Aufwachen, ich bin fertig :P