190 likes | 369 Views
Software(technik)praktikum Tutorial: Subversion (SVN). Ü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.
E N D
Software(technik)praktikumTutorial: Subversion (SVN) Software(technik)praktikum – SVN-Tutorial
Ü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
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 edit edit Benachrichtigung (z.B. per E-Mail) Repository src Main.java,v App.java,v doc index.html,v main.html,v src src Main.java Main.java App.java App.java Commit Commit Update Update doc SVN doc index.html index.html main.html main.html Software(technik)praktikum – SVN-Tutorial
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
Subversion • 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 Software(technik)praktikum – SVN-Tutorial
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:ignorebenutzen Software(technik)praktikum – SVN-Tutorial
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
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
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
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
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
Übung 1: Neue Klasse • Check Out • https://svn-serv-lab.cs.upb.de/swtpra2012-XYbzw. https://svn-serv-lab.cs.upb.de/sopra2012-XY • A:Neue Datei • Neue Klasse erstellen: Factorial.java • Fakultäts-Funktionpublicstaticlongfac(intn)rekursiv implementieren • Team Synchronize (auf Projekt) • SVN Add toversioncontrol… • Commit • B: Team Synchronize, Update Software(technik)praktikum – SVN-Tutorial
Übung 2: Merging • Merging • A: Methodefac() durch eine iterative Version ersetzen • B: Methodepublicstaticvoidprintfac()ergänzen, die die Fakultäten von 5 und 10 ausgibt (wichtig: unterhalb von fac());aufrufen inmain()-Methode • A:Comparewith… • A:Synchronizewith Repository,Einchecken • B:Comparewith … • B:Synchronizewith Repository,Einchecken, Update, Einchecken Software(technik)praktikum – SVN-Tutorial
Übung 3: Konflikte • Konflikte • 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 • Konflikt auflösen (Doppelklick auf Datei in Sync View, Copy All Non-Conflicting Changes, Rest manuell links anpassen) • Commit A: Oder • 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#“ • 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 • A: Neuen Branch erzeugen: • Fakultäts-Berechnung mit Caching implementieren • Neue Funktion staticlongfac_cache(intn) wird in fac() aufgerufen • Team Branch (Name: „test-swtpra12/team_#TEAM#“), Start working in thebranch • B: Begrenzung auf n ≤ 20 in fac() einbauen und einchecken • B: Branch mit trunkmergen: • TeamMerge, URL = „branches/test-swtpra12 ¬ /team_#TEAM#/de.upb.swtpra12.svntutorial“ • Konflikte lösen, Commit Software(technik)praktikum – SVN-Tutorial
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
Übung 6: MS Office • Umgang mit Word-Dokumenten • 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