33
Versionsverwaltung von Softwareartefakten 21. Oktober 2014

Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Embed Size (px)

Citation preview

Page 1: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Versionsverwaltung von Softwareartefakten

21. Oktober 2014

Page 2: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Taentzer Einführung in die Softwaretechnik 43

Überblick

Wie verwaltet man Softwareartefakte? Versionskontrolle für verschiedene Softwareartefakte:

Anforderungsdokumente, Modelle, Code, Testdateien, Dokumentationen, etc.

Möglichst unabhängiges Arbeiten im Team Nutzen: Dokumentation von Änderungen, Konflikte erkennen und

lösen, Release zusammenstellen

Einführung in Versionsverwaltungswerkzeuge SVN – zentrale Verwaltung von Dateien und Ordnern Git – Verteilte Versionsverwaltung

Page 3: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Taentzer Einführung in die Softwaretechnik 44

Versionsverwaltung

Ein Versionsverwaltungssystem soll das gemein-schaftliche Arbeiten an Dokumenten ermöglichen. Hauptproblem: Wie ermöglicht das Versionsverwaltungssystem

den Nutzern Zugang zu gemeinsamen Dokumenten, ohne versehentlich Informationen zu löschen?

Ansatz: Alle gemeinschaftlich genutzten Dokumente werden in einem

Repository (einem speziellen Datenbehälter) verwaltet. Die Nutzer bekommen Lese- bzw. Schreibzugang zu Dokumenten

im Repository.

Page 4: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Taentzer Einführung in die Softwaretechnik 45

Das Problem Zwei Nutzer entscheiden

sich, an demselben Dokument zu arbeiten.

Beide führen verschiedene Änderungen an ihren lokalen Versionen des Dokuments durch.

Die lokalen Versionen werden nacheinander in das Repository geschrieben.

Der zweite Nutzer überschreibt dadurch eventuell Änderungen des ersten Nutzers.

aus „Version Control with Subversion“

Page 5: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Taentzer Einführung in die Softwaretechnik 46

Problemlösung durch Sperren von Dokumenten

Der erste Nutzer sperrt das Dokument und arbeitet lokal daran.

Der zweite Nutzer möchte das Dokument lesen, es ist aber gesperrt.

Der erste Nutzer schreibt sein geändertes Dokument ins Repository und entsperrt es.

Der zweite Nutzer kann nun das Dokument lesen und für andere sperren.

aus „Version Control with Subversion“

Page 6: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Taentzer Einführung in die Softwaretechnik 47

Wie gut ist diese Problemlösung?

Administrative Probleme: Gesperrte Dokumente werden vergessen zu entsperren. Andere

Nutzer kommen an die gesperrten Dokumente nicht ran.

Unnötige Sequentialisierung der Arbeit: Wenn zwei Nutzer ein Dokument an verschiedenen Stellen ändern

möchten, könnten sie dies auch gleichzeitig tun.

Falsches Gefühl von Sicherheit: Zwei Nutzer arbeiten getrennt auf den Dokumenten A und B. Was

passiert, wenn A von B abhängig ist? A und B passen nicht mehr zusammen. Die Nutzer müssen dieses Problem diskutieren.

Page 7: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Taentzer Einführung in die Softwaretechnik 48

Problemlösung durch Mischen von Dokumenten

Die Nutzer kopieren das Dokument in ihre lokalen Ordner.

Sie arbeiten unabhängig daran. Einer schreibt als Erster das

Dokument in das Repository zurück.

Der Zweite kann das Dokument nicht zurückschrieben: „out of date“

aus „Version Control with Subversion“

Page 8: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Taentzer Einführung in die Softwaretechnik 49

Problemlösung durch Mischen von Dokumenten

Der Zweite vergleicht seine lokale Version mit der aktuellen im Repository.

Beide Versionen werden gemischt.

Die neue (gemischte) Version wird zurückgeschrieben.

Die neue Version kann ausgelesen werden.

aus „Version Control with Subversion“

Page 9: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Taentzer Einführung in die Softwaretechnik 50

Eigenschaften dieser Problemlösung

Ein Dokument liegt in zwei Versionen vor. Die Änderungen eines Nutzers überlappen sich mit den

Änderungen des zweiten Nutzers. Diese Situation wird Konflikt genannt.

Lassen sich zwei Dokumente immer mischen? Die Unterschiede zwischen zwei Versionen lassen sich durch

Werkzeuge anzeigen. Ein Nutzer (eventuell in Absprache mit dem zweiten Nutzer) entscheidet jeden einzelnen Konflikt.

Die Praxis hat gezeigt, dass die meisten nebenläufigen Änderungen an einem Dokument konfliktfrei sind.

Page 10: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Taentzer Einführung in die Softwaretechnik 51

Revisionen

Revision: Ein Zustand der zu verwaltenden Softwareartefakte

Softwareartefakte sind in Ordnern gegliedert.

Versionsverwaltung sollte nicht nur die Dateien, sondern auch die Ordner verwalten.

Page 11: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Taentzer Einführung in die Softwaretechnik 52

Subversion

Versionsverwaltungssoftware für Dateien UND Ordner Open Source Software von CollabNet entwickelt:

http://subversion.apache.org/ Features:

Versionierung von Ordnern und Dateien Auch das Umbenennen, Erzeugen und Löschen von Ordnern

werden festgehalten. Sammlung von Änderungen wird als Transaktion verwaltet.

SVN-Book unter: http://svnbook.red-bean.com/ Subclipse: Subversion für Eclipse:

http://subclipse.tigris.org/

Page 12: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Taentzer Einführung in die Softwaretechnik 53

Neues Repository aufsetzen

Repository erzeugen: svnadmin create <Repositoryname>

Initial Repositorystruktur aufsetzen: svn import <Name> file://<Ordnername>

Repository anzeigen: svn list file://<Repositoryname>

Page 13: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Taentzer Einführung in die Softwaretechnik 54

Typischer Arbeitszyklus

Arbeitskopie auf den neuesten Stand bringen: svn update

Änderungen an der Ordner-struktur durchführen: svn add svn delete svn copy svn move

Änderungen prüfen: svn status svn diff

Änderungen zurücknehmen (optional): svn revert

Konflikte auflösen: svn update svn resolved

Änderungen in das Repository einlesen: svn commit

Page 14: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Taentzer Einführung in die Softwaretechnik 55

Subversion in Eclipse Eclipse Plugins: Subversive,

Subclipse Wechsel zur SVN Repository

Exploring Perspective Für das Arbeiten mit einem

bestehenden Repository muss die Repository Locationangegeben werden: New Repository Location

Neues Repository anlegen:New Repository

Für den Import eines bestehenden Projekts in das SVN Repository: Import eclipse.org/subversive

Page 15: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Taentzer Einführung in die Softwaretechnik 56

Subversion in Eclipse

In SVN Repository Explorer: Checkout lädt eine bestimmte Revision aus dem Repository herunter.

Lokales Arbeiten in der Java-Perspektive. SVN-Befehle unter Team →…

Synchronisation im Team: Überblick über Änderungen im Projekt: Window→OpenPerspective → Other..., dort Team Synchronizing Die Team Synchronization

Perspective wird gestartet.subclipse.tigris.org

Page 16: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Taentzer Einführung in die Softwaretechnik 57

Git Software für verteilte Versionsverwaltung Kein zentraler Server nötig Lokale Kopie des gesamten Repository

Lokale Funktionalität ähnlich wie bei SVN Neue Features:

Versionen als Schnappschüsse eines Mini-Dateisystems Nichtlineare Entwicklung von Software: einfaches Branching und

Merging Datenabgleich zwischen verschiedenen Repositories möglich

Git-Buch: ProGit unter: http://git-scm.com/book Git in Eclipse: http://www.eclipse.org/egit

Page 17: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Aufbau eines zentralen Repository ein zentrales Repository für

die Arbeitsgruppe z.B. in der Cloud

lokale Arbeitsbereiche oderlokale Repositories

Taentzer Einführung in die Softwaretechnik 58

confluence.atlassian.com

Page 18: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Taentzer Einführung in die Softwaretechnik 59

Git in Eclipse Eclipse Plugin: EGit Wechsel zur Git Repository

Perspective Versionsverwaltung starten:

Neues Git Repository anlegen mit Create

Vorhandenes Repository kopieren mit Clone

Vorhandenes Projekt in ein neues Repository legen: Team -> Share Project

Lokales Arbeiten in der Java-Perspektive. Git-Befehle unter Team →…

eclipse.org/subversive

Page 19: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Clone eines Git Repository Um lokal auf das

entfernte Repository zugreifen zu können Auswahl einzelner

Branches Angabe des lokalen

Ordners

Taentzer Einführung in die Softwaretechnik 60

Page 20: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Lade lokaleSourcen

Push lädt einen lokalen Branchoder eine Reihe von Commits in ein entferntes Repository.

zum Veröffentlichen von Beiträgen

Pull lädt einen Branch runter.

Taentzer Einführung in die Softwaretechnik 61

Page 21: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Entferntes Repository

Taentzer Einführung in die Softwaretechnik 62

Page 22: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Austausch zwischen Repositories: Ein Beispielablauf

Ein zentrales Repository Lokales Mischen

Beispiel: John kann nach Jessica kein Push ausführen. Er muss ihre Änderungen holen und lokal mischen.

Das Holen von Änderungen (fetch, pull) führt zu einem neuen Branch.

Das lokale Mischen (merge) führt zwei Brancheszusammen.

Taentzer Einführung in die Softwaretechnik 63

aus „ProGit“

Page 23: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Vergleich verschiedener Versionen

Taentzer Einführung in die Softwaretechnik 64

Page 24: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Versionierung in verschiedenen Entwicklungsprozessen

Kleines Projekt: Kleines Team Ein zentrales Repository Jedes Team-Mitglied darf

alle Dateien lesen und schreiben.

Bekanntes Modell

Taentzer Einführung in die Softwaretechnik 65

aus „ProGit“

Page 25: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Versionen als Schnappschüsse

Version: Mini-Dateisystem in einem Zustand Unveränderte Dateien werden nicht kopiert.

Git fügt nur Daten hinzu.

Taentzer Einführung in die Softwaretechnik 66

aus „ProGit“

Page 26: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Typische Git-Befehle auf lokalem Repository

Start der Versionierung: git add <filename>

Datei auschecken: git checkout <filename>

Versionierungsabfragen: git status (Status der Dateien) git log (Historie)

Änderungsanzeige (vor commit) git diff

Datei einchecken: git add <filename> ( Index)

git commit (indizierte Dateien) git commit –a <filename> Datei aus Repository löschen:

git rm <filename>

Taentzer Einführung in die Softwaretechnik 67

Page 27: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Commit-Objekt: Referenz auf einen

Schnappschuss Commit-Objekte zeigen

jeweils auf das vorige.

Weitere Einträge sind … der Autor, der Committer und die Commit-Message

Taentzer Einführung in die Softwaretechnik 68

Branches

aus „ProGit“

Page 28: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Der Default-Branch heisst „master“.

Zwei Branches können auf denselben Schnappschuss verweisen.

Der aktuelle Branch heisst „HEAD“.

Taentzer Einführung in die Softwaretechnik 69

Branches

aus „ProGit“

Page 29: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Branches

Die Historie läuft auseinander:Beispiel: „master“-Branch „testing“-Branch

Der Nutzer kann… beliebig zwischen den

Branches wechseln. die Branches zusammen-

führen

Taentzer Einführung in die Softwaretechnik 70

aus „ProGit“

Page 30: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Beispiel für Branches

Taentzer Einführung in die Softwaretechnik 71

http://nvie.com/posts/a-successful-git-branching-model/

Page 31: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Versionierung in verschiedenen Entwicklungsprozessen

Mittelgroßes Projekt: Jeder Entwickler hat ein eigenes Repository.

Der eigene Entwickler hat Schreibzugriff. Alle anderen Entwickler haben Lesezugriff.

Der Integration Manager liest Änderungen und integriert sie in die Hauptversion. Er hat Schreibzugriff auf das Haupt-Repository. Alle anderen Entwickler haben Lesezugriff.

Taentzer Einführung in die Softwaretechnik 72

aus „ProGit“

Page 32: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Versionierung in verschiedenen Entwicklungsprozessen

Sehr großes Projekt: Hunderte von Entwicklern Hierarchische Versionierung Lieutenant: Integration

Manager für einen Teil des Projekts

Dictator: Integration Manager für alle Teile des Projekts Er hat Schreibzugriff auf das

Haupt-Repository.

Taentzer Einführung in die Softwaretechnik 73

aus „ProGit“

Page 33: Versionsverwaltung von Softwareartefakten - uni-marburg.de · Taentzer Einführung in die Softwaretechnik 45 Das Problem Zwei Nutzer entscheiden sich, an demselben Dokument zu arbeiten

Taentzer Einführung in die Softwaretechnik 74

Zusammenfassung Wesentliche Features der Versionsverwaltung:

Anforderungsdokumente, Modelle, Code, Testdateien, Dokumentationen, etc. sind ständigen Änderungen unterworfen, die versioniert werden sollen.

Unterstützung für nebenläufiges Arbeiten im Team. Konsistente Konfigurationen durch die Versionierung von Ordnern

und Dateien Häufiges Commit mit Dokumentation der Änderungen Verschiedene Branches für verschiedene Entwicklungen im Projekt Verteilte Repositories für verteilte Versionskontrolle im Projekt

Fortschritt in der Werkzeugentwicklung f. Versionsverwaltung: CVS SVN Git