SVN-Tutorial - Heinz Nixdorf Institut
Download
Report
Transcript SVN-Tutorial - Heinz Nixdorf Institut
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.
•
•
TeamMerge, 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