1 WS 2012 Software-Engineering II Versionsverwaltung.

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Versionsmanagement Zentral oder Verteilt?
PHP Extension und Application Repository
Forschungszentrum Informatik
Projekt Tools: Subversion, Wiki Nikolay Nachev Seminar StuPro cims cims.
Einführung in Subversion (SVN)
On the Criteria to Be Used in Decomposing Systems into Modules
Einführung von Team System Ein Vorgehensvorschlag
PowerBuilder und SVN Erste Schritte bei der Versionsverwaltung von Softwareprojekten mit Subversion (SVN) PBUGG 2009, A. Schmidt.
Pflege der Internetdienste
Datenbankzugriff im WWW (Kommerzielle Systeme)
Software(technik)praktikum Tutorial: Subversion (SVN)
Objektrelationales Mapping mit JPA Working with Persistent Objects Jonas Bandi Simon Martinelli.
Fachpraktikum Graphische Benutzungsoberflächen Sommersemester 2008 Steffen Koch, Christoph Müller, Guido Reina, Christiane Taras, Michael Wörner Versionsverwaltung.
Sortierverfahren Richard Göbel.
DOM (Document Object Model)
XINDICE The Apache XML Project Name: Jacqueline Langhorst
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
1/15 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – CVS Projektgruppe KIMAS CVS Daniel Karuseit.
Brandenburgische Technische Universität Cottbus Program Profiling Andrzej Filipiak Übung Testen von Software SoSe 2006.
Teamorganisation: Versionsverwaltung
Teamorganisation: Versionsverwaltung
1 WS 2012 Software-Engineering II Aspektorientierung.
Inhalte und Maßnahmen eingegeben haben,
Concurrent Versions System
Kapitel 14: Recovery Oliver Vornberger
Wizards & Builders GmbH Schulung Visual SourceSafe für Visual FoxPro Norbert Abb W&B.
FH-Hof HTML - Einführung Richard Göbel. FH-Hof Komponenten des World Wide Webs WWW Browser HyperText Transfer Protocol (HTTP) via Internet WWW Server.
Welche Funktion hat die php.ini? -Beinhaltet wichtige Einstellungen für PHP. Genannt seien hier u.a. der Speicherort von Cookies, Parameter der Kompilierung,
GIT und Redmine Übung.
Software-Projektführung
Aichinger Christian, Strasser Jürgen
Dokumenten-Management-System
Delphi II - OOP IFB Fortbildung
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Continuous Integration mit Jenkins
Warum brauche ich ein CMS – Content Management System?
Versionsverwaltung für Visual Studio .NET mit Subversion
Andreas Rehm und Rainer Wolf Jeder Benutzer hält ein vollständiges Repository aller Dateien und Commits Zentrale Repositories sind möglich aber.
Computer in einer vernetzten Welt
Projektarbeit PHP 5.3 / MySQL & Content Management Systems
Cooperation unlimited © Zühlke Juni 2009 Hansjörg Scherer Folie 1 Cooperation unlimited TFS als BackEnd für Visual Studio und Eclipse.
Sesame Florian Mayrhuber
Analyse von Ablaufdiagrammen
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Publikation auf Knopfdruck Judith Riegelnig Michael Grüebler 19. Oktober 2010 / Statistiktage Neuenburg.
Softwaretechnikpraktikum: Vorlesung 2
Subversion für Anfänger und solche, die es noch werden wollen ;)
Agenda Rückblick 2. Aufbau der Software Benutzeroberfläche 4. Ausblick
Das IT - Informationssystem
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
Concurrent Versions System
Analyseprodukte numerischer Modelle
Marco Behnke Git free & open source, distributed version control system Git.
prof. dr. dieter steinmannfachhochschule trier © prof. dr. dieter steinmann Folie 1 vom Montag, 30. März 2015.
Installation, Konfiguration, Online stellen, Zugriff © by Lars Koschinski 2003.
Team Technical-Designer  Oliver Schmitz (TCD)  Leiter des Technical-Design Teams  Stefan Müller (TAD für Team 1 und 2)  Spezialist für Maya und was.
Das IT - Informationssystem
Thomas Rau, Peter Brichzin Repositories zur Unterstützung von kollaborativen Arbeiten in Softwareprojekten.
IIS The microsoft way. © Windows NT Option pack optionale Server Komponenten IIS (Internet Information Server) Webserver von Microsoft.
Seminararbeit Release Management von Web-Systemen Minh Tran Lehrstuhl für Software Engineering RWTH Aachen
, Jens Rettig1 Einsatz von Versionsverwaltungstools im ORACLE – Umfeld Dipl.-Inform. Jens Rettig
Redetext für 15 Jahre Dig it! ???. Anlässlich zu unserem 15 jährigen Bestehen der dig it! GmbH möchte ich Euch begrüßen... Zu unserem 15 jährigen Jubiläum.
Das SVN Eclipse Plugin. Wofür ist SVN gedacht? Nutzung von SVN mit Eclipse Perspektive einrichten Repository einbinden Mit dem Repository arbeiten Konflikt.
Orxonox SVN Subversion in Orxonox: ORXONOX DevelopmentFinished Versions trunk Maintainer Version Almost always running branches Developer Version Copies.
WS2016: Container von A bis Z
?.
Continuous Integration mit TeamCity
 Präsentation transkript:

1 WS 2012 Software-Engineering II Versionsverwaltung

2 WS 2012 Themenübersicht »Objektorientierung »Aspektorientierung »Vorgehensmodelle »UML »Analyse- & Entwurfsmuster »Objektorientiertes Testen »Versionsverwaltung »Refactoring »Labor (Praktischer Teil)

3 WS 2012 Versionskontrolle »Bei der Software-Entwicklung im Team greifen unterschiedliche Teilnehmer auf gemeinsame Ressourcen schreibend und lesend zu »Strategie erforderlich »Synchronisation der Zugriffe »Vermeiden eines Verlustes von Änderungen »Versions-Historie von Dateien sehr hilfreich in vielen Fällen

4 WS 2012 Distributed vs. Centralized Version Control System Distributed Revision Control Centralized Revision Control GIT Concurrent Versions System (CVS) Subversion (SVN) Vorlesungsinhalt Centralized: Es gibt einen Server, der den Quellcode zentral verwaltet. Distributed: Jeder Entwickler hat eine lokale Instanz der Server-Software, die sich mit anderen Server-Instanzen synchronisieren kann.

5 WS 2012 Konflikt-Lösung bzw. -Vermeidung »Pessimistic Revision Control »Nur eine Person darf zu einer Zeit eine Datei bearbeiten »Pessimistischer Ansatz: Gleichzeitiges Bearbeiten ist nicht ohne großen Merge-Aufwand möglich »Zyklus: Lock – Modify - Write »Optimistic Revision Control »Beliebig viele Entwickler können Dateien gleichzeitig editieren »Optimistischer Ansatz: In der Regel ist das Mergen von Dateien ohne größere Probleme möglich »Zyklus: Copy – Modify – Merge »Jeder Entwickler besitzt eine lokale Kopie des gesamten Repository

6 WS 2012 Vertreter Version Control System Pessimistic Revision Control Optimistic Revision Control Revision Control System (RCS) Concurrent Versions System (CVS) Subversion (SVN) Vorlesungsinhalt

7 WS 2012 Centralized Optimistic Revision Control Repository Working Copy des Entwicklers Working Copy des Entwicklers Working Copy des Entwicklers

8 WS 2012 Aktionen »Check-Out »Holt eine bestimmte Version eines Repository initial aus dem System »Update »Aktualisiert die lokale Version auf den neusten Stand »Führt merging durch, falls lokal Anderungen an aktualisierten Dateien bestehen »Commit »Checkt geänderte Dateien in das Repository ein »Revert »Macht noch nicht eingecheckte Änderungen in der lokalen Working Copy rückgängig

9 WS 2012 Tags »Durch das Setzen eines Tags kann ein aktueller Stand eines Repository markiert (getagged) werden »Dadurch ist es später einfach, den mit einem Tag versehenen Stand wieder auszuchecken

10 WS 2012 Branches »Ein Branch ist ein Extra-Ast im Repository, welcher separat weiterentwickelt werden kann Hauptzweig t 1. Branch 2. Branch 3. Branch Es ist möglich Branches wieder auf andere Branches oder den Hauptzweig zu mergen

11 WS 2012 Branches »Branches werden oft erstellt, wenn eine Software einen Release-Zustand erreicht hat »Damit später auftretende Bugs in alten Versionen behoben werden können, ist es nötig, getrennte Codebasen zu haben »Bugfixes können von alten Branches in den Hauptzweig oder in andere Branches gemergt werden

12 WS 2012 CVS »1989 entstanden »Speicherung »Repository-Daten werden als gewöhnliche Dateien mit Zusatzinformationen auf dem Dateisystem gespeichert »Die Dateien auf dem Dateisystem sind wie im Repository organisiert »Geschwindigkeitseinbußen »Jede Datei im Repository hat eine eigene Revisionsnummer »Kaum weitere Meta-Informationen zu Dateien möglich ».cvsignore: Die hier aufgeführten Dateien werden in der Sandbox ignoriert »Keine atomaren Commits »(E.g. Verbindungsabbrüche!!!)

13 WS 2012 Tags, Branches, Hauptzweig »Der Hauptzweig wird bei CVS HEAD genannt »Revisionsnummern sind nicht Repositoryweit »Spezielle Version nur über ein genaues Datum definierbar »Tags sind hier deshalb sehr wichtig »Eine spezielle Revision wird markiert »Branching ist ein relativ aufwendiges Verfahren

14 WS 2012 Subversion Version Control with Subversion (svn-book) Online-E-Book -> Ben Collins-Sussman Brian W. Fitzpatrick C. Michael Pilato

15 WS 2012 Subversion »Nachfolger von CVS »Open Source »Repository-Nummern beziehen sich auf das komplette Repository »Haben zwei Dateien die gleiche Revisionsnummer, wurden sie mit dem gleichen Commit eingecheckt »Speicherung in einer FSFS-Datei- Struktur »Bessere Performance »Atomare Commits. Entweder ganz oder gar nicht!

16 WS 2012 Properties »Dateien/Verzeichnisse können Properties besitzen »Steuerung von Subversion »Ablegen von Meta-Informationen »Bsp.: »svn:ignore bei Verzeichnissen definiert, welche Dateien in der Working Copy ignoriert werden sollen »svn:externals gibt URLs von Repositories an, die in dieses Verzeichnis eingebunden werden sollen

17 WS 2012 Tags, Branches, Hauptzweig »Konventionen: »Der Hauptzweig wird bei SVN Trunk genannt »Da Revisionsnummern repositoryweit sind, kann eine spezielle Version bereits darüber spezifiziert werden »Tags sind in SVN deshalb von deutlich weniger Bedeutung als bei CVS »Branching geht sehr einfach »Es wird eine Kopie vom Trunk oder einem Branch erstellt »$ svn copy

18 WS 2012 Korrekter Code! »Nie fehlerhaften Quellcode einchecken »Egal ob im Trunk oder im eigenen Branch »Der Code muss Compilierbar sein »Der Code sollte fehlerfrei sein »Hooks erlauben das Kontrollieren von Commits

19 WS 2012 Hooks »Shell Skripte, liegen im SVN-Server-Verzeichnis »Pre-Commit »Shell-Skript wird vor dem Committen ausgeführt »Erlaubt das Verweigern eines Commits »Bsp.: Syntaxcheck von Sourcecode, XML-Dateien »Post-Commit: »Shell-Skript wird nach dem Committen ausgeführt »Keine Möglichkeit den Commit abzubrechen »Bsp.: Teammitglieder über Commits informieren, Continuous-Integration-Server antriggern »…

20 WS 2012 Practical Guidelines »3 verschiedene Arten von Branches »Trunk »Feature Branches »Release Branches

21 WS 2012 Trunk »Der Trunk enthält nur Stable Features »Stable bedeutet, dass zu jedem Zeitpunkt, bei jeder Revision »Der Code releast werden könnte »Vom Stand ein Development-Branch gemacht werden könnte »Alle Commits in stable branches müssen atomar sein »Es macht oft keinen Sinn direkt im Trunk zu entwickeln, denn »Man sollte so oft wie möglich committen »In der Regel sind viele commits nötig, bis eine stable Version vorliegt

22 WS 2012 Trunk - Ausnahmen »Direkt im Trunk entwickeln bei: »Bugfixes »Erweiterungen, die so klein sind, dass sie nur einen Commit benötigen »Aber: »Oft werden Features unterschätzt, es fehlen am Ende Resourcen wie Übersetzungen oder Grafiken, die das Feature so lange blockieren »So lange nicht alle Resource fertig sind, darf nicht committed werden

23 WS 2012 Release Branches »Ist eine Entwicklung abgeschlossen, wird ein neuer Release-Branch erzeugt »Die Version dieses Branches wird deployed trunk release release branch release

24 WS 2012 Release-Branch erstellen $ svn copy Der Branch wird vom Trunk erstellt Für Branch-Namen sollte ein Schema gefunden werden branches/ New-Years-Features

25 WS 2012 Merging im Release Branch »Nicht jede stabile Änderung im Trunk benötigt einen neuen Release Branch (Z.B.: Bugfixes) »Entscheidend ist der Umfang der Änderungen trunk release release branch release Bugfixes

26 WS 2012 Release-Branch updaten »Bei kleinen Bugfixen kann der Release- Branch aktualisiert werden »$ cd »$ svn up »$ svn merge –rXXX:YYY [REP.URL]/trunk »$ svn commit »XXX:YYY ist der Bereich der zu mergenden Commits im Trunk (Bsp.: 100:104) »XXX exklusive (wird nicht gemergt) »Nur eine Revision mergen (REV-1):REV

27 WS 2012 Hotfixes im Release Branch »Entwickelungen direkt im Release Branch sollten generell vermieden werden »Bugfixes zuerst im Trunk machen, dann in den Release Branch mergen »Gefahr: Bugfixes werden nicht in den Trunk übernommen – beim nächsten Release- Branch fehlt der Bugfix »Kein Software-Entwickler will einen Fehler zwei Mal beheben! »Ausnahme: Änderungen, die für den Trunk 1.Nicht mehr nötig sind 2.Nicht möglich sind

28 WS 2012 Feature Branches »Neuentwicklungen, umfangreicher als dass sie mit einem Commit im Trunk abgeschlossen werden können trunk feature branch 1 feature branch 2

29 WS 2012 Feature Branch erstellen $ svn copy Der Branch wird vom Trunk erstellt Für Branch-Namen sollte ein Schema gefunden werden branches/dev(elopment)-Branchname

30 WS 2012 Was ist ein Feature? »Beginnt ein Team mit mehreren Features zur selben Zeit kann es Sinn machen, nicht jedes Feature in einem separaten Branch zu entwickeln »Extra Branch wenn »Features nicht korrespondieren und von gegenseitigen Entwicklungen nicht profitieren können »Die geplanten Release-Dates der Features sehr unterschiedlich sind (Eine Lang- Zeit-Entwicklungs- und ein kurzes Feature)

31 WS 2012 Branch aktuell halten »Durch kontinuierliches Mergen mit dem Trunk sollte der Branch aktuell gehalten werden »1-2 Mal pro Woche »Ansonsten ist das Zurück-Mergen am Schluss sehr schwierig »Wenn mehrere Personen an dem Branch arbeiten, sollte eine Person als dafür Zuständig erklärt werden »Das Zurück-Mergen ist in Version 1.4 relativ aufwändig: Bereits gemergte Änderungen dürfen nicht noch einmal gemerged werden »In Version 1.5 wurde Merge-Tracking eingeführt: Dadurch muss nicht darauf geachtet werden, ob ein Merge dieser Revision bereits gemacht wurde trunk feature branch 1 feature branch 2

32 WS 2012 Merging-Syntax (1.4) »Um mergen zu können, benötigt man die Revisionsnummer des letzen Merges »Beim 1. Merge ist diese die Revisionsnummer bei der der Branch erstellt wurde. Diese Nummer steht in der letzten Zeile der Ausgabe von svn log -- stop-on-copy »Bei späteren merges kann man durch svn log -- stop-on-copy die Revisionsnummer des letzten merges herausfinden »Voraussetzung dafür ist, dass bei jedem Merge das selbe Schema für den Commit String verwendet wird »$ svn merge [url]/svn/ncs/trunk -r XXXX:HEAD »$ svn commit -m"merged -r XXXX:HEAD from trunk"

33 WS 2012 Feature abschließen »Ist das Feature abgeschlossen, muss es wieder in den Trunk gemergt werden »In das Verzeichnis eines Trunk Checkouts wechseln »Trunk nochmals aktualisieren »Aktuelle Revisionsnummer des Trunks notieren (XXX) »$ svn »$ svn commit –mMerged back branch to trunk »Ab diesem Moment ist die Entwicklung in diesem Branch abgeschlossen trunk feature branch

34 WS 2012 Server-Software »Server-Software unter »In vielen Linux-Distibutionen bereits im Paket-Installer enthalten »Debian: apt-get install subversion »Für HTTP-Verbindung: »Apache Modul dav_svn

35 WS 2012 Die wichtigsten Zugriffsarten »Subversion bietet eine Vielzahl an Möglichkeiten, auf das Repository zuzugreifen » bzw. »Zugriff erfolgt durch eine HTTP-Verbindung »(Ermöglicht auch mit HTTP-Proxy das auschecken) »Achtung: Bei HTTP keine Verschlüsselung der Authentifizierung »svn+ssh:// »Software erzeugt eine SSH-Verbindung zum Server und Tunnelt dadurch die Kommunikation

36 WS 2012 Tools »Tortoise SVN »Windows Explorer Integration » »Subversive »Eclipse Plugin » »Command Line Clients