© Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn...

19
© Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Software(technik)praktikum Tutorial: Subversion (SVN) Software(technik)praktikum – SVN-Tutorial

Transcript of © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn...

Page 1: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Software(technik)praktikum Tutorial: Subversion (SVN) Software(technik)praktikum.

© 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

Page 2: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Software(technik)praktikum Tutorial: Subversion (SVN) Software(technik)praktikum.

© 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

Page 3: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Software(technik)praktikum Tutorial: Subversion (SVN) Software(technik)praktikum.

© 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

Page 4: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Software(technik)praktikum Tutorial: Subversion (SVN) Software(technik)praktikum.

© 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

Page 5: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Software(technik)praktikum Tutorial: Subversion (SVN) Software(technik)praktikum.

© 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

Page 6: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Software(technik)praktikum Tutorial: Subversion (SVN) Software(technik)praktikum.

© 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

Page 7: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Software(technik)praktikum Tutorial: Subversion (SVN) Software(technik)praktikum.

© 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

Page 8: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Software(technik)praktikum Tutorial: Subversion (SVN) Software(technik)praktikum.

© 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

Page 9: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Software(technik)praktikum Tutorial: Subversion (SVN) Software(technik)praktikum.

© 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

Page 10: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Software(technik)praktikum Tutorial: Subversion (SVN) Software(technik)praktikum.

© 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

Page 11: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Software(technik)praktikum Tutorial: Subversion (SVN) Software(technik)praktikum.

© 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

Page 12: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Software(technik)praktikum Tutorial: Subversion (SVN) Software(technik)praktikum.

© 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

Page 13: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Software(technik)praktikum Tutorial: Subversion (SVN) Software(technik)praktikum.

© 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

Page 14: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Software(technik)praktikum Tutorial: Subversion (SVN) Software(technik)praktikum.

© 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

Page 15: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Software(technik)praktikum Tutorial: Subversion (SVN) Software(technik)praktikum.

© 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

Page 16: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Software(technik)praktikum Tutorial: Subversion (SVN) Software(technik)praktikum.

© 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

Page 17: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Software(technik)praktikum Tutorial: Subversion (SVN) Software(technik)praktikum.

© 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

Page 18: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Software(technik)praktikum Tutorial: Subversion (SVN) Software(technik)praktikum.

© 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

Page 19: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Software(technik)praktikum Tutorial: Subversion (SVN) Software(technik)praktikum.

© 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