Software(technik)praktikum
© Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn
Tutorial: Subversion (SVN)
Software(technik)praktikum – SVN-Tutorial
Übersicht
 Kurz: Übersicht Versionsmanagement
 siehe auch Vorlesungs-Folien
© Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn
 Werkzeuge
 Grundsätzliches
 Integration in Eclipse
 Praktische Übung mit SVN
 Commits, Updates, Konflikte lösen
 Branch/Merge (wenn noch Zeit)
 Weitere Tipps
Software(technik)praktikum – SVN-Tutorial
© Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn
Versions- und Konfigurationsmanagement
Beobachtung:
 Software besteht aus vielen verschiedenen Dokumenten
(Anforderungen, Design, Programmcode, Dokumentation,
Handbuch, …)
 Software-Entwicklung ist Teamarbeit
Konsequenz:
 Viele verschiedene Personen greifen auf dieselbe Menge
von Dokumenten zu
 Oft bearbeiten verschiedene Personen gleichzeitig
(unabhängig voneinander) dasselbe Dokument
 Bearbeitungs-Konflikte vermeiden
Software(technik)praktikum – SVN-Tutorial
Synchronisation von Dateien
Repository
src
Main.java,v
App.java,v
doc
index.html,v
main.html,v
© Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn
edit
src
Main.java
App.java
doc
index.html
main.html
Update
Update
Commit
edit
SVN
Commit
Benachrichtigung (z.B. per E-Mail)
Software(technik)praktikum – SVN-Tutorial
src
Main.java
App.java
doc
index.html
main.html
Werkzeuge
 Concurrent Versions System (CVS)
 Älteres System
© Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn
 Subversion (SVN)
 Versionierung des kompletten Projektarchivs anstatt
einzelner Ressourcen
 Bessere Unterstützung für Erstellen, Löschen, Umbenennen
 Besserer Umgang mit Binärdaten
 Lokale Kopien des „Basis“-Versionen der Ressourcen
Software(technik)praktikum – SVN-Tutorial
Subversion

trunk

Haupt-Entwicklungszweig
 In der Regel arbeitet man darin

branches
© Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn


tags



Neben-Entwicklungszweige
Markierungen für bestimmte Zeitpunkte
z.B. „Release 1.0“
Alles sind Ressourcen in SVN, keine
separaten Konzepte für Branches und
Tags
Software(technik)praktikum – SVN-Tutorial
Grundsätzliche Tipps (1)
 Keinen nicht compilierbaren Code einchecken
© Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn
 Bugs sind in der Regel kein Problem, es sei denn sie
machen das Programm unbenutzbar
 Für Experimente mit größeren Folgen Branches verwenden
 Nur notwendige Ressourcen einchecken
 Keine Ausgabe-Dateien (*.class,…) oder Logfiles
 In Eclipse: „Derived Resources“
• Flag wird oft automatisch gesetzt, kann aber auch manuell
gesetzt werden
 Besser: svn:ignore benutzen
Software(technik)praktikum – SVN-Tutorial
Grundsätzliche Tipps (2)
 Aussagekräftige Commit-Kommentare
© Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn
 Schlecht: „ClassA.java geändert“
 Besser: „NPE-Bug behoben“
 Gut: „Bug #1234 behoben, verursacht durch NPE in
ClassA.main()“
 Zeilen nicht zu lang werden lassen
 Zeilenbasiertes Mischen beim Update
 Wichtig für LaTeX
 Binär-Dateien nur wenn nötig, weil
 automatisches Mischen nicht möglich (Ausnahmen: siehe
Folie 18)
 Konflikte schwer zu beheben
Software(technik)praktikum – SVN-Tutorial
Eclipse: Subversive (1)
© Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn
 http://www.eclipse.org/subversive/
documentation/gettingStarted/
aboutSubversive/install.php
 Help  Software Updates…
Available Software, Add Site…
 SVN Update Sites:
http://download.eclipse.org/technology/
subversive/0.7/update-site/
http://www.polarion.org/projects/
subversive/download/eclipse/2.0/
update-site/
Software(technik)praktikum – SVN-Tutorial
Eclipse: Subversive (2)
 Subversive-Eclipse-Plugins
 Benötigt:
• SVN Team Provider
• mind. einen SVN Connector, z.B. SVNKit, JavaHL
© Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn
 Optional:
• SVN Team Provider Localization
• SVN Integration for Mylyn
• SVN JDT Ignore Extensions
 Eines von vielen Tutorials:
http://cs.wustl.edu/~cytron/cse132/HelpDocs
/Subversive/subversive.htm
Software(technik)praktikum – SVN-Tutorial
Eclipse: Subclipse
 Eine Alternative zu Subversive ist Subclipse:
© Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn
 http://subclipse.tigris.org/
 Außerhalb von Eclipse bietet sich unter Windows der
SVN-Client TortoiseSVN an:
 http://tortoisesvn.tigris.org/
Software(technik)praktikum – SVN-Tutorial
Praktische Übungen
© Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn
 Diese Übungen können im Team-Repository durchgeführt
werden
 Teams bilden zu je zwei Leuten (A / B) und gemeinsam
arbeiten
Übung 1: Neue Klasse
 Check Out
 https://svn-serv-lab.cs.upb.de/swtpra2012-XY bzw.
https://svn-serv-lab.cs.upb.de/sopra2012-XY
© Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn
 A: Neue Datei
1.
2.
Neue Klasse erstellen: Factorial.java
Fakultäts-Funktion public static long fac(int
n) rekursiv implementieren
3.
4.
5.
Team  Synchronize (auf Projekt)
SVN Add to version control…
Commit
 B: Team  Synchronize, Update
Software(technik)praktikum – SVN-Tutorial
Übung 2: Merging
© Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn
 Merging
1.
2.
A: Methode fac() durch eine iterative Version ersetzen
B: Methode public static void printfac()
ergänzen, die die Fakultäten von 5 und 10 ausgibt
(wichtig: unterhalb von fac());
aufrufen in main()-Methode
3.
4.
5.
6.
A: Compare with…
A: Synchronize with Repository, Einchecken
B: Compare with …
B: Synchronize with Repository, Einchecken, Update,
Einchecken
Software(technik)praktikum – SVN-Tutorial
Übung 3: Konflikte
 Konflikte
© Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn
1.
2.
3.
A, B: In der printfac()-Methode die Berechnung der
Fakultät durch eine Schleife ersetzen, die alle Fakultäten
von 1…5 (A) oder 1…10 (B) berechnet
B: Einchecken
A: Entweder
1.
2.
Konflikt auflösen (Doppelklick auf Datei in Sync View, Copy
All Non-Conflicting Changes, Rest manuell links anpassen)
Commit
A: Oder
1.
2.
Update und schauen
Konflikt auflösen (in Sync View Rechtsklick  Edit Conflicts,
anschließend Mark as Merged), Commit
Software(technik)praktikum – SVN-Tutorial
Übung 4: Revision History
 A: Tag erstellen mit dem Namen „Version 0.4 von
team_#TEAM#“
© Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn
 A, B: Umgang mit der Versions-Geschichte üben
 Show History
 Diverse Compare-Operationen
 Replace With Revision, Get Content
 Einfach ausprobieren!
Software(technik)praktikum – SVN-Tutorial
Übung 5: Branch/Merge
 Branch/Merge
© Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn
1.
A: Neuen Branch erzeugen:
•
•
Fakultäts-Berechnung mit Caching implementieren
Neue Funktion static long fac_cache(int n) wird in
fac() aufgerufen
•
Team  Branch (Name: „test-swtpra12/team_#TEAM#“),
Start working in the branch
B: Begrenzung auf n ≤ 20 in fac() einbauen und
einchecken
B: Branch mit trunk mergen:
2.
3.
•
•
TeamMerge, URL = „branches/test-swtpra12 ¬
/team_#TEAM#/de.upb.swtpra12.svntutorial“
Konflikte lösen, Commit
Software(technik)praktikum – SVN-Tutorial
SVN: Weitere Infos
© Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn
 Weitere Informationen auf den WWWSeiten des Softwaretechnikpraktikums und
http://subversion.tigris.org
http://svnbook.red-bean.com
 Weitere Frontends:
 TortoiseSVN
http://tortoisesvn.net/
• Unterstützt MS Office, OpenOffice
Software(technik)praktikum – SVN-Tutorial
Übung 6: MS Office
 Umgang mit Word-Dokumenten
© Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn
1.
2.
3.
4.
5.
A, B: TortoiseSVN installieren
A: Word-Dokument anlegen und mit zwei Absätzen
versehen, Einchecken
B: Update
A, B: Beide verändern jeweils einen Absatz
A, B: Commit / Update
Software(technik)praktikum – SVN-Tutorial
Herunterladen

SVN-Tutorial - Heinz Nixdorf Institut