© fachgebiet softwaretechnik, heinz nixdorf institut, universität paderborn...
TRANSCRIPT
© F
achg
ebie
t S
oftw
aret
echn
ik,
Hei
nz N
ixdo
rf I
nstit
ut,
Uni
vers
ität
Pad
erbo
rn
Software(technik)praktikum
Tutorial: Subversion (SVN)
Software(technik)praktikum – SVN-Tutorial
© F
achg
ebie
t S
oftw
aret
echn
ik,
Hei
nz N
ixdo
rf I
nstit
ut,
Uni
vers
ität
Pad
erbo
rn
Übersicht
Kurz: Übersicht Versionsmanagement siehe auch Vorlesungs-Folien
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
© F
achg
ebie
t S
oftw
aret
echn
ik,
Hei
nz N
ixdo
rf I
nstit
ut,
Uni
vers
ität
Pad
erbo
rn
Versions- und Konfigurationsmanagement
Beobachtung: Software besteht aus vielen verschiedenen Dokumenten
(Anforderungen, Design, Programmcode, Dokumentation, Handbuch, …)
Software-Entwicklung ist TeamarbeitKonsequenz: 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
© F
achg
ebie
t S
oftw
aret
echn
ik,
Hei
nz N
ixdo
rf I
nstit
ut,
Uni
vers
ität
Pad
erbo
rn
Synchronisation von Dateien
Software(technik)praktikum – SVN-Tutorial
SVN
srcMain.javaApp.java
docindex.htmlmain.html
srcMain.java,vApp.java,v
docindex.html,vmain.html,v
srcMain.javaApp.java
docindex.htmlmain.html
Repository
Update
edit
Commit
Benachrichtigung (z.B. per E-Mail)
edit
Update
Commit
© F
achg
ebie
t S
oftw
aret
echn
ik,
Hei
nz N
ixdo
rf I
nstit
ut,
Uni
vers
ität
Pad
erbo
rn
Werkzeuge
Concurrent Versions System (CVS) Älteres System
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
© F
achg
ebie
t S
oftw
aret
echn
ik,
Hei
nz N
ixdo
rf I
nstit
ut,
Uni
vers
ität
Pad
erbo
rn
Subversion
Software(technik)praktikum – SVN-Tutorial
trunk Haupt-Entwicklungszweig In der Regel arbeitet man darin
branches Neben-Entwicklungszweige
tags Markierungen für bestimmte Zeitpunkte z.B. „Release 1.0“
Alles sind Ressourcen in SVN, keine separaten Konzepte für Branches und Tags
© F
achg
ebie
t S
oftw
aret
echn
ik,
Hei
nz N
ixdo
rf I
nstit
ut,
Uni
vers
ität
Pad
erbo
rn
Grundsätzliche Tipps (1)
Keinen nicht compilierbaren Code einchecken 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
© F
achg
ebie
t S
oftw
aret
echn
ik,
Hei
nz N
ixdo
rf I
nstit
ut,
Uni
vers
ität
Pad
erbo
rn
Grundsätzliche Tipps (2)
Aussagekräftige Commit-Kommentare 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
© F
achg
ebie
t S
oftw
aret
echn
ik,
Hei
nz N
ixdo
rf I
nstit
ut,
Uni
vers
ität
Pad
erbo
rn
Eclipse: Subversive (1)
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
© F
achg
ebie
t S
oftw
aret
echn
ik,
Hei
nz N
ixdo
rf I
nstit
ut,
Uni
vers
ität
Pad
erbo
rn
Eclipse: Subversive (2)
Subversive-Eclipse-Plugins Benötigt:
• SVN Team Provider• mind. einen SVN Connector, z.B. SVNKit, JavaHL
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
© F
achg
ebie
t S
oftw
aret
echn
ik,
Hei
nz N
ixdo
rf I
nstit
ut,
Uni
vers
ität
Pad
erbo
rn
Eclipse: Subclipse
Eine Alternative zu Subversive ist Subclipse: 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
© F
achg
ebie
t S
oftw
aret
echn
ik,
Hei
nz N
ixdo
rf I
nstit
ut,
Uni
vers
ität
Pad
erbo
rn
Praktische Übungen
Diese Übungen können im Team-Repository durchgeführt werden
Teams bilden zu je zwei Leuten (A / B) und gemeinsam arbeiten
Software(technik)praktikum – SVN-Tutorial
© F
achg
ebie
t S
oftw
aret
echn
ik,
Hei
nz N
ixdo
rf I
nstit
ut,
Uni
vers
ität
Pad
erbo
rn
Ü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 A: Neue Datei
1. Neue Klasse erstellen: Factorial.java
2. Fakultäts-Funktion public static long fac(int n) rekursiv implementieren
3. Team Synchronize (auf Projekt)
4. SVN Add to version control…
5. Commit B: Team Synchronize, Update
Software(technik)praktikum – SVN-Tutorial
© F
achg
ebie
t S
oftw
aret
echn
ik,
Hei
nz N
ixdo
rf I
nstit
ut,
Uni
vers
ität
Pad
erbo
rn
Übung 2: Merging
Merging1. A: Methode fac() durch eine iterative Version ersetzen
2. 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. A: Compare with…
4. A: Synchronize with Repository, Einchecken
5. B: Compare with …
6. B: Synchronize with Repository, Einchecken, Update, Einchecken
Software(technik)praktikum – SVN-Tutorial
© F
achg
ebie
t S
oftw
aret
echn
ik,
Hei
nz N
ixdo
rf I
nstit
ut,
Uni
vers
ität
Pad
erbo
rn
Übung 3: Konflikte
Konflikte1. 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
2. B: Einchecken
3. A: Entweder1. Konflikt auflösen (Doppelklick auf Datei in Sync View, Copy
All Non-Conflicting Changes, Rest manuell links anpassen)
2. Commit
A: Oder1. Update und schauen
2. Konflikt auflösen (in Sync View Rechtsklick Edit Conflicts, anschließend Mark as Merged), Commit
Software(technik)praktikum – SVN-Tutorial
© F
achg
ebie
t S
oftw
aret
echn
ik,
Hei
nz N
ixdo
rf I
nstit
ut,
Uni
vers
ität
Pad
erbo
rn
Übung 4: Revision History
A: Tag erstellen mit dem Namen „Version 0.4 von team_#TEAM#“
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
© F
achg
ebie
t S
oftw
aret
echn
ik,
Hei
nz N
ixdo
rf I
nstit
ut,
Uni
vers
ität
Pad
erbo
rn
Übung 5: Branch/Merge
Branch/Merge1. 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
2. B: Begrenzung auf n ≤ 20 in fac() einbauen und einchecken
3. B: Branch mit trunk mergen:• TeamMerge, URL = „branches/test-swtpra12 ¬
/team_#TEAM#/de.upb.swtpra12.svntutorial“• Konflikte lösen, Commit
Software(technik)praktikum – SVN-Tutorial
© F
achg
ebie
t S
oftw
aret
echn
ik,
Hei
nz N
ixdo
rf I
nstit
ut,
Uni
vers
ität
Pad
erbo
rn
SVN: Weitere Infos
Weitere Informationen auf den WWW-Seiten 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
© F
achg
ebie
t S
oftw
aret
echn
ik,
Hei
nz N
ixdo
rf I
nstit
ut,
Uni
vers
ität
Pad
erbo
rn
Übung 6: MS Office
Umgang mit Word-Dokumenten1. A, B: TortoiseSVN installieren
2. A: Word-Dokument anlegen und mit zwei Absätzen versehen, Einchecken
3. B: Update
4. A, B: Beide verändern jeweils einen Absatz
5. A, B: Commit / Update
Software(technik)praktikum – SVN-Tutorial