Versionsverwaltung mit Subversion

Ähnliche Dokumente
Kapitel 2. Software Configuration Management mit CVS und SVN

Software Configuration Management (SCM)

Software(technik)praktikum: SVN-Tutorial

Versionskontrolle mit Subversion

Versionsmanagement. Software(technik)praktikum: Vorlesung 2: Versionsmanagement

Kapitel 2 Software Configuration Management

Einführung in Subversion

Thomas Rau (mit Material von Peter Brichzin) Repositories zur Unterstützung von kollaborativen Arbeiten in Softwareprojekten

Prof. Dr. Marko Boger. Prof. Dr. Christian Johner. Versionsmanagement

Versionsverwaltung. Dr.-Ing. Matthias Sand. Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2009

Software Engineering in der Praxis

Einführung in Subversion. Tutorium SWP

Software-Engineering Grundlagen des Software-Engineering

Versionsverwaltung. Seminar Softwareentwicklung in der Wissenschaft Robert Wiesner

Inhaltsverzeichnis. 1 Einleitung. Literatur. 1.1 CVS (Concurrent Version System) [Pru03, Zee02, Ced05]

Versionsverwaltung von Softwareartefakten. Dr. Thorsten Arendt Marburg, 05. November 2015

Tool-Chain. Übung. Eclipse, SVN, Ant, Cobertura, Metrics Labor "Software Engineering Experiment" Sebastian Meyer und Kai Stapel

FS cs108 Programmierpraktikum Subversion. Lukas Beck Cedric Geissmann Alexander Stiemer

Versionierung und Dateistruktur

Versionsverwaltung mit SVN

Enes Kurnaz, Oliver Nagel Institut für Mathematik und Informatik. Versionsverwaltung mit Git

Vorlesung Programmieren. Versionskontrollsysteme. Ziele von VCS. Versionskontrolle

Software-Engineering Grundlagen des Software-Engineering 7.3 Sourcecode-Verwaltung mit Versionsmanagement-Systemen Einführung in Subversion (SVN)

Einführung in Subversion

Einführung zu Git. Das Nötigste für die Studienarbeit im Modul Datenkommunikation. Ege Inanc

Versionsverwaltung mit git

Subversion. Einstieg in die. Versionskontrolle

Versionsverwaltung GIT & SVN. Alexander aus der Fünten. Proseminar: Methoden und Werkzeuge, SS Lehrstuhl i9, Prof. Dr. T.

Framework zur Unterstützung von Unit-Tests

Software Engineering in der Praxis

Medieninformatik Praktikum. Jens Rademacher

Von SVN zu Git. Daniel Willmann cbna

CVS. The open standard for version control. (Concurrent Versions System) Maik Zemann CVS

Citrix ShareFile Der ShareFile Sync Client for Windows

Eclipse und Java Einheit 05: Arbeiten im Team: CVS

Kurzanleitung für den MyDrive Client

Crashkurs Subversion / Trac / Provisioning. Jan Zieschang, , Berlin

Versionsverwaltung mit SVN

SVN-Einführung für das SEP DS und CM. Julian Timpner, Stefan Brenner, Stephan Rottmann

Einführung in Subversion

Team- Entwicklung unter Eclipse

Versionsverwaltung von Softwareartefakten. Dr. Thorsten Arendt Marburg, 06. November 2014

Apache Subversion (SVN)

Versionskontrolle mit Subversion

MAILCHIMPCONNECTOR FÜR DAYLITE

Continuous Integration (CI) Workshop

Versionsverwaltungssysteme

Praktikum Ingenieurinformatik (PI)

Sourcecodeverwaltung

Einfu hrung in Subversion mit TortoiseSVN

Apache Subversion (SVN)

Informationen zur Installation und Nutzung von Subversion (SVN)

Enterprise PHP Tools

Kennenlernen. Tutorium 7 iloveswt.de Fabian I. Miltenberger INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD)

2 Einführung in das Konfigurationsmanagement 11

cytan cytansynchro Version 4.1 / Mai 2016 Letzte Softwareanpassung: Woche 17 / 2016

Versionsmanagement mit Subversion

Citrix ShareFile Der ShareFile Sync Client for Mac OS X

Versionskontrollsysteme. Uwe Berger & Markus Dahms <bralug@bralug.de>

Arbeiten mit dem Versionsverwaltungssystem. Jannik Kramer Proseminar Werkzeuge für das wissenschaftliche Arbeiten

Software Engineering. 10. Konfigurationsmanagement

Konfigurationsmanagement

Kurzanleitung für den MyDrive Client

Subversion und Tortoise SVN Tutorial. Quelle: mit freundlicher Genehmigung von sd&m Research

Subversion als Werkzeug in der Software-Entwicklung Eine Einführung. Tobias G. Pfeiffer Freie Universität Berlin

Programmieren 2 05 Versionsverwaltung mit Git

Programmieren 1 11 Versionsverwaltung mit Git - Grundlagen -

Versionsverwaltung mit GIT

GebertSoftware Erfahrung, die Sie nutzen. pitop - Entwickler-Workstation für JIGS-KMS

Klicken Sie, um das Format des Titeltextes zu bearbeiten

Transkript:

Objektorientierte Softwareentwicklung Sommersemester este 2010 0 R O O T S Kapitel 0 Versionsverwaltung mit Subversion Stand: 14.04.2010

Probleme während der Softwareentwicklung Viele Anforderungen Viele Änderungen Viele Versionen Koordination erforderlich! Viele Projekte Viele Arbeitsumgebungen Viele Entwickler 2010 Dr. G. Kniesel Vorlesung Objektorientierte Softwareentwickolung (OOSE) Seite 0-2 R O O T S

Warum Software Configuration Management? Problem Software-Entwicklung ist nicht linear Man macht Programmierfehler Man trifft falsche Entwurfsentscheidungen Software-Entwicklung ist Teamarbeit Sie und andere arbeiten parallel l... auf vielen verschiedenen Dateien Verwaltung verschiedener Versionen Kunde erhält stabile Version, während Entwicklung weitergeht Bugfixes müssen in alle Versionen integriert werden Verschiedene Kunden erhalten verschiedene Varianten des Produkts Sie möchten wissen, was Sie wann warum getan haben zu alter Version zurückgehen wissen, wer was wann warum getan hat Änderungen gemeinsam nutzen parallele Entwicklung und Integration ti kontrollieren Varianten kontrollieren 2010 Dr. G. Kniesel Vorlesung Objektorientierte Softwareentwickolung (OOSE) Seite 0-3 R O O T S

SCM: Das Fundament des Entwicklungsprozesses Analyse Entwurf Implementierung Test Wartung Software Configuration Management (SCM) Sammeln und Verwalten von Informationen um Software zu erzeugen, zu warten und zu erweitern. Quellcode Bitmaps & JPEGs Anforderungen Binärcode HTML/XML Dateien Entwürfe Build Skripte CGI, Javascript Test Skripte Konfigurationen CSS Dokumentation

Vorlesung Softwaretechnologie Kapitel 2: Konfigurationsmanagement ato a age e t mit tsubversion so R O O T S Arbeiten mit Subversion (SVN) Check-in und Check-out Commit und Update Synchronisierung Konfliktbeurteilung durch Dateivergleich Manuelle Konfliktauflösung

Repository und Sandbox CVS / SVN Arbeitskopie Entwicklungswerkzeuge Entwicklungswerkzeuge CVS / SVN Repository Prinzip Arbeitskopie Ein zentrales Sammelbecken ( Repository ) aller relevanter Dateien Nur offizielle Versionen Viele private Arbeitsumgebungen ( Sandbox ) mit Kopien von Dateien Auch temporäre, inkonsistente, unfertige,... Versionen 2010 Dr. G. Kniesel Vorlesung Objektorientierte Softwareentwickolung (OOSE) Seite 0-6 R O O T S

Checkin und Checkout CVS / SVN Arbeitskopie Entwicklungswerkzeuge Entwicklungswerkzeuge Checkout CVS (Projekt) / SVN Repository Checkin Arbeitskopie Fügt Projekt dem Repository hinzu Checkout Erstellt eine Arbeitskopie des Projekts vom Repository 2010 Dr. G. Kniesel Vorlesung Objektorientierte Softwareentwickolung (OOSE) Seite 0-7 R O O T S

Commit und Update CVS Commit / SVN (Dateien) Arbeitskopie Entwicklungswerkzeuge Entwicklungswerkzeuge Update CVS / SVN (Dateien) Repository Commit Arbeitskopie Transferiert vom Programmierer geänderte Dateien in das Repository Update Transferiert geänderte Dateien vom Repository in die Arbeitskopie 2010 Dr. G. Kniesel Vorlesung Objektorientierte Softwareentwickolung (OOSE) Seite 0-8 R O O T S

Check-In: Projekt unter Versionskontrolle stellen Ausgangssituation Ein Repository existiert t Ein Projekt existiert, wird aber noch nicht gemeinsam genutzt. Check-In des Projektes Das Projekt wird dem Repository hinzugefügt Es ist nun für alle Entwickler verfügbar die Zugriff auf das Repository haben Projekt X Check-In / Sharing Repository Projekt X Entwickler https://svn.iai.uni-bonn.de/repos/iai_software/se/ oose2010/gruppe/xx Repository root Projekt Pfad 2010 Dr. G. Kniesel Vorlesung Objektorientierte Softwareentwickolung (OOSE) Seite 0-9 R O O T S

Check-Out: Initialer Projektdownload Check-out eines Projektes Entwickler bekommen eine lokale l Arbeitskopie i Von jetzt an können sie an dem Projekt arbeiten Auschecken wird nur einmal pro Projekt gemacht! Neue Version aus Repository holen siehe Update Arbeitskopie Entwickler A Projekt X Check out Repository Entwickler B Projekt X Arbeitskopie Projekt X 2010 Dr. G. Kniesel Vorlesung Objektorientierte Softwareentwickolung (OOSE) Seite 0-10 R O O T S

Objektorientierte Softwareentwicklung Kapitel 0: Versionsverwaltung eso s e atu mit t Subversion eso R O O T S Zeitliche Sicht der Operationen check out commit / update Synchronisation

Check-Out: Initialer Projektdownload Entwickler bekommt eine lokale Arbeitskopie eines Projektes Auschecken wird nur einmal pro Projekt gemacht! Neue Version aus Repository holen siehe Update Arbeitskopie von Entwickler A Projekt im Repository Arbeitskopie von Entwickler B Check Out Check Out t 0 t 1

Commit: Änderungen in das Repository übertragen Ausgangslage: Entwickler A hat seine Arbeitskopie geändert Commit Er fügt seine Änderungen dem Repository hinzu Mit einem Commit Kommentar teilt er dem Team mit was er warum geändert hat: NullPointer-Exception behoben, die auftrat wenn... Arbeitskopie von Entwickler A Projekt im Repository Arbeitskopie von Entwickler B Check Out Check Out Commit t 0 t 1 t 2

Update: Neueste Änderungen vom Repository übernehmen Ausgangslage: Repository hat sich geändert Entwickler B ist sich sicher(!), dass er die Änderungen übernehmen will Update B aktualisiert seine Arbeitskopie mit dem aktuellen Zustand des Repository Problem Woher weiß der Entwickler, welche Änderungen er übernehmen soll? Besser: Zuerst Synchronize benutzen! Arbeitskopie von Entwickler A Projekt im Repository Arbeitskopie von Entwickler B Check Out Commit / Update Check Out Update / Update t 0 t 1 t 2 t 3 Konflikt?

Synchronisation: Versionsvergleich Vergleich des Projektes in Arbeitskopie mit Repository bezogen auf Stand beim letzten Abgleich (check-in / commit / check-out / update) Automatisierter Vergleich aller Dateien im Projekt Automatisierter Vergleich einzelner Dateiinhalte Der Entwickler entscheidet selbst was aktuell ist... und führt Updates oder Commits durch (eventuell selektiv) Arbeitskopie von Entwickler A Projekt im Repository Arbeitskopie von Entwickler B Check Out / Update Check Out t 0 / Update Commit Update Gemeinsame Bezugsversion t 1 t 2 t 3 Konflikt?

Synchronize View : Gesamtübersicht Automatisierte Gesamtübersicht Vergleich auf Projektebene: Alle Dateien des Projektes (oder des selektierten Ordners) werden verglichen Zeigt pro Datei ein- und ausgehende Änderungen sowie Konflikte durch entsprechende Symbole 2010 Dr. G. Kniesel Vorlesung Objektorientierte Softwareentwickolung (OOSE) Seite 0-16 R O O T S

Symbole im Synchronize View Ausgehen nde Änder rung Änderung) (lokale + - Lokale Datei ist neuer als ihre Version im Repository Überschreibe Version im Repository mit lokaler Version Neue lokale Datei existiert nicht im Repository Füge Datei zum Repository hinzu Datei aus Repository wurde lokal gelöscht Datei aus (nächster Version in) dem Repository löschen ng ry) e Änderu m Repositor ngehende Änderung im Ein ( Ä + - Datei im Repository ist neuer als ihre lokale Version Überschreibe lokale l Kopie mit der aus dem Repository Neue Datei aus Repository existiert nicht lokal Füge die Datei der lokalen Arbeitskopie hinzu Lokale Datei wurde im Repository ygelöscht Lösche die Datei aus der lokalen Arbeitskopie 2010 Dr. G. Kniesel Vorlesung Objektorientierte Softwareentwickolung (OOSE) Seite 0-17 R O O T S

Bedeutung der Symbole im Synchronize View (Fortsezung) Die vorherige Folie stellt die Fälle dar, wenn eine Datei gegenüber dem Stand des letzten Abgleichs mit dem Repository nur auf einer Seite verändert wurde Änderung nur lokal Übernahme ins Repository (ausgehende Änderung) Änderung nur in Repository Übernahme in lokale Kopie (eingehende Änderung) Wenn eine Datei auf beiden Seiten neuer als der Stand beim letzten Abgleich ist, wird ein Konflikt gemeldet: Konf flikt + Dateiinhalt wurde lokal und im Repository verändert Manuelle Konfliktlösung notwendig Lokale veränderte Datei wurde im Repository gelöscht Manuelle Konfliktlösung notwendig Lokale gelöschte Datei wurde im Repository verändert Manuelle Konfliktlösung notwendig 2010 Dr. G. Kniesel Vorlesung Objektorientierte Softwareentwickolung (OOSE) Seite 0-18 R O O T S

Synchronisieren: Konfliktauflösung Konfliktauflösung erfordert Inhaltsvergleich der Dateien Angezeigt in Side-by-side View / Compare Editor von Eli Eclipse Zeigt Versionsvergleich von Dateien ( diff ) übersichtlich an Beginne Detailvergleich durch Doppelklick auf fdie entsprechende Datei... 2010 Dr. G. Kniesel Vorlesung Objektorientierte Softwareentwickolung (OOSE) Seite 0-19 R O O T S

Synchronisieren: Inhaltsvergleich im Compare Compare Fenster Die lokale Arbeitskopie wird mit der Repository Version verglichen Hier ein Fall ohne Konflikte: nur ausgehende Änderung SVN- / CVS-Plugin für Eclipse hilft beim Versionsvergleich Compare View 2010 Dr. G. Kniesel Vorlesung Objektorientierte Softwareentwickolung (OOSE) Seite 0-20 R O O T S

Synchronisieren: Inhaltsvergleich im Compare Editor Fenster Hier die Anzeige eines Konfliktes Bei Bedarf kann auch die gemeinsame Bezugsversion angezeigt werden ( Show Ancestor Pane ). So kann man selbst entscheiden, welches die relevante Änderung ist 2010 Dr. G. Kniesel Vorlesung Objektorientierte Softwareentwickolung (OOSE) Seite 0-21 R O O T S

3-Wege-Konfliktauflösung mit Hilfe der Common Ancestor Pane Anhand des gemeinsamen Vorfahren feststellen was sich geändert hat Die Änderung übernehmen gemeinsamer Vorfahre Version A...... x=0...... x=0... x=1...... x=1... abgeglichene g Version (nach merge ) Version B Mit SVN ist dies ein manueller Prozess: Sie selbst entscheiden für jede Datei mit Konflikten für jeden Konflikt in der Datei 2010 Dr. G. Kniesel Vorlesung Objektorientierte Softwareentwickolung (OOSE) Seite 0-22 R O O T S

Beispiel: Common Ancestor Pane (1) Szenario: Gemeinsam eine Ausarbeitung / Veröffentlichung schreiben Konflikte in Datei evaluation.lyx l Frage: Welcher Stand ist der neueste? Erster Schritt: Show Ancestor Pane 2010 Dr. G. Kniesel Vorlesung Objektorientierte Softwareentwickolung (OOSE) Seite 0-23 R O O T S

Beispiel: Common Ancestor Pane (2) Antwort: Keiner Hier wurde tatsächlicht h an der gleichen Stelle parallel l geändert! Absprache mit dem Kollegen / Co-Author erforderlich! 2010 Dr. G. Kniesel Vorlesung Objektorientierte Softwareentwickolung (OOSE) Seite 0-24 R O O T S

Beispiel: Common Ancestor Pane (3) Antwort: Keiner Hier wurde tatsächlicht h an der gleichen Stelle parallel l geändert! Absprache mit dem Kollegen / Co-Author erforderlich! 2010 Dr. G. Kniesel Vorlesung Objektorientierte Softwareentwickolung (OOSE) Seite 0-25 R O O T S

Synchronisieren: Aktionen zur Konfliktauflösung Override and Update (Menupunkt) Überschreibt lokale l Version mit Repository-Inhalt Override and Commit (Menupunkt) Überschreibt Repository-Version mit lokaler Version Nie ohne vorherige Kommunikation mit dem Autor der Repository-Version! i Merging Merging (Manueller Vorgang) Selektive Übernahme einzelner Änderungen der Datei im Compare Editor Nur Übernahme von Repository-Stand in lokale Version! Anschließend Mark as Merged auf lokaler Version (Menupunkt) Lokale Version wird nun als aktueller als die aus dem Repository angesehen Bei einem Commit würden nun die nicht übernommenen Repository-Inhalte überschrieben! 2010 Dr. G. Kniesel Vorlesung Objektorientierte Softwareentwickolung (OOSE) Seite 0-26 R O O T S

Vorlesung Softwaretechnologie Kapitel 2: Konfigurationsmanagement ato a age e t mit tsubversion so R O O T S Struktur von Subversion-Repositories Spezielle Ordner Optionen

Repository Layout: Spezielle Ordner trunk Enthält die aktuelle Entwicklungslinie li i (wie HEAD in CVS) Also den trunk auschecken! tags Enthält unveränderliche Versionen des Projekts Für Releases, Milestones, Backups branches Enthält alternative Entwicklungszweige des Projekts Für Untergruppen eines Teams oder parallele Entwicklung verschiedener Varianten 2010 Dr. G. Kniesel Vorlesung Objektorientierte Softwareentwickolung (OOSE) Seite 0-28 R O O T S

Repository Layout: Alles nur Konvention! Vorherige Folie ist nur Konvention! trunk, branches, tags sind für Subversion normale Ordner Es ist bloß der Subversive-Client, der sie besonders behandelt Ob das geschehen soll, kann als Option angegeben werden Man darf die Ordner des Projekts organisieren wie man möchte! 2010 Dr. G. Kniesel Vorlesung Objektorientierte Softwareentwickolung (OOSE) Seite 0-29 R O O T S

Objektorientierte Softwareentwicklung Kapitel 0: Versionsverwaltung eso s e atu mit t Subversion eso R O O T S Installation des Subversive Subversive Plugins für Eclipse Siehe Vorlesungswebsite https://sewiki.iai.uni-bonn.de/teaching/lectures/oose/2010/svn

Wichtige Links Subversion Buch http://svnbook.red-bean.com/nightly/en/svn-book.pdf b / htl / / b k df Subversion Server subversion.tigris.org Subversion Clients als Erweiterung für den Windows Explorer TortoiseSVN (nur für Windows) Subversive www.polarion.org 2010 Dr. G. Kniesel Vorlesung Objektorientierte Softwareentwickolung (OOSE) Seite 0-31 R O O T S