5.B Versionierung & Konfigurationsmanagement



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

Einführung in Subversion

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

Software Engineering in der Praxis

git & git-flow Jens Sandmann Warpzone Münster e.v. Jens Sandmann (WZ) git & git-flow / 31

Proseminar Unix-Tools CVS Daniel Weber & Zhen Zhang Betreuer: Volker Baier

Kurzanleitung zu. von Daniel Jettka

Praktikum Ingenieurinformatik (PI)

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

CVS-Einführung. Sebastian Mancke,

8. Dokumentenverwaltung mit CVS eine Einführung

Werkzeuge für das Softwarekonfigurationsmanagement

Quellcodeverwaltung mit SubVersion

Versionskontrolle mit Subversion

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

FS cs108 Programmierpraktikum Subversion. Lukas Beck Cedric Geissmann Alexander Stiemer

Die Projek*ools. Files, Git, Tickets & Time

Von SVN zu Git. Daniel Willmann cbna

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

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

Upgrade-Leitfaden. Apparo Fast Edit. Wechsel von Version 2 auf Version oder Wechsel von Version auf Version 3.0.

Mercurial. or how I learned to stop worrying and love the merge. Ted Naleid IAIK

Verteilte Versionskontrolle mit GIT Dortmund Ansgar Brauner - GreenPocket GmbH - Köln

Einführung Git Interna Workflows Referenzen. Git. Fast Version Control System. Michael Kuhn

Übung: Verwendung von Java-Threads

OP-LOG

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein:

Dokumentenmanagement mit active.pdm

WinCVS Version 1.3. Voraussetzung. Frank Grimm Mario Rasser

SDD System Design Document

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

Kurzeinführung Excel2App. Version 1.0.0

Kaspersky Labs GmbH Kaspersky Anti-Virus für Windows Datei Server v6.0

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

Apache Subversion (SVN)

Deployment Deployment Seite 1 / 25

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Einführung in Subversion. Tutorium SWP

Wie benutzt man TortoiseSVN

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Subversion. Einstieg in die. Versionskontrolle

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Möglichkeiten des Parallelbetriebs der VR-NetWorld Software Parallelbetrieb VR-NetWorld Software 4.4x und Version 5.0 ab der 2. Beta!

Versionsverwaltung für die KU Betriebssysteme. Eine Einführung

Informationssystemanalyse Problemstellung 2 1. Trotz aller Methoden, Techniken usw. zeigen Untersuchungen sehr negative Ergebnisse:

ecaros2 - Accountmanager

SFTP SCP - Synology Wiki

IT-Projekt-Management

Software Qualität Übung 1

Moodle aktuell halten mit Git

Anlegen eines SendAs/RecieveAs Benutzer unter Exchange 2003, 2007 und 2010

HSR git und subversion HowTo

Torsten Flatter inovex GmbH. "Git.NET" gibt's nicht?

Testplan. Hochschule Luzern Technik & Architektur. Software Komponenten FS13. Gruppe 03 Horw,

Agile Software-Entwicklung im Kontext der EN50128 Wege zum Erfolg

PCC Outlook Integration Installationsleitfaden

ZENITY - Die Software für Ihre Unternehmens-Releaseplanung

Upgrade-Leitfaden. Apparo Fast Edit 1 / 7

crm-now/ps Webforms Webdesigner Handbuch Erste Ausgabe

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Anleitung zur Installation von SFirm 3.1 inklusive Datenübernahme

MailUtilities: Remote Deployment - Einführung

Windows 7 - Whoami. Whoami liefert Informationen wie z.b. die SID, Anmelde-ID eines Users, sowie Gruppenzuordnungen, Berechtigungen und Attribute.

Taking RM Agile. Erfahrungen aus dem Übergang von traditioneller Entwicklung zu Scrum

Versionsverwaltung mit Mercurial für Einsteiger

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)

How to do? Projekte - Zeiterfassung

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite

Kurzanleitung zur Softwareverteilung von BitDefender Produkten...2

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

SharePoint Workspace 2010 Installieren & Konfigurieren

2. Installation unter Windows 8.1 mit Internetexplorer 11.0

DVD Version 9.1. Netzwerkinstallation + VDE-Admin-Tool.

So funktioniert die NetWorker 7.5 Eigenschaft zum Sichern umbenannter Verzeichnisse ( Backup renamed Directories )

Hilfe zur Dokumentenverwaltung

Quickstep Server Update

objectif Requirements Modeller

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

DocuWare unter Windows 7

Task: Nmap Skripte ausführen

Erfolgreicher Ums9eg auf Git

peer-to-peer Dateisystem Synchronisation

CaRD Add-on for SAP Materials Master Report Interpreter Pflege mehrsprachiger Kurztexte im Materialstamm

Software-Validierung im Testsystem

Lexware professional und premium setzen bis einschließlich Version 2012 den Sybase SQL-Datenbankserver

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

KONVERTIERUNG VON EXTERNEN DTA DATEIEN (ÜBERWEISUNGEN)

Neue Funktionen in Innovator 11 R5

Titel. SCSM ITIL - CMDB - neue CI Klasse erstellen und benutzen. Eine beispielhafte Installationsanleitung zur Verwendung im Testlab

Step by Step Webserver unter Windows Server von Christian Bartl

Wir beraten Sie. Wir unterstützen Sie. Wir schaffen Lösungen. Wir bringen Qualität. Wir beraten Sie. Wir unterstützen Sie. Wir schaffen Lösungen

Seite 1. rt. Backup. 1. My. Auf dem. eingefügt. folgendem Link:

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Clients in einer Windows Domäne für WSUS konfigurieren

Neue Funktionen im GUI für PC-DMIS V3.x 4.x Seite 1 von 8

Einfu hrung in Subversion mit TortoiseSVN

Transkript:

5.B Versionierung & Konfigurationsmanagement 30.04.2002 Agenda Motivation: Was ist Configuration Management und warum ist das nützlich Tätigkeiten, Rollen und Verantwortlichkeiten Zentrale Begriffe: Configuration Items, Baselines, Versionskontrolle Software Configuration Management Plan Standards (Beispiel: IEEE 828-1990) Grundelemente des IEEE 828-1990 Werkzeuge CVS Was ist CVS? CVS im Einsatz (Exkurs: Konflikte und Zugriffkontrolle) Hinweise Einführung in das Software-Engineering - -2- Dr. Walter Kuhn 1

Motivation Software Configuration Management Verschiedene Personen (Entwickler, Anwender,...) arbeiten mit einer (komplexen) Software, die kontinuierlich gepflegt und weiterentwickelt wird. Es wird mehr als eine Version unterstützt. (Bsp: Windows) Ausgelieferte Standard-Versionen Kundenspezifisch angepasste Systeme Teile, die gerade entwickelt werden Portable Software für verschiedene Hardware und Betriebssysteme Nutzen des Software Configuration Management () Verwaltet und steuert die Erstellung solcherart sich entwickelnder Systeme Erlaubt die Kontrolle über die Kosten einer Änderung Nachvollziehbarkeit von Systemen und deren Entwicklung Ordnung im Produktzyklus! Einführung in das Software-Engineering - -3- Fragen fürs Konfigurationsmanagement Korrigierter Fehler ist wieder aufgetaucht Ist ein bestimmter Fehler behoben worden? Fehlerkorrektur war nicht gut -> zurücksetzen auf einen früheren Zustand Wer hat eine Änderung durchgeführt Warum wurde eine Änderung durchgeführt Welche Version hat ein Kunde Welche Teilkomponenten ergeben eine bestimmte Version? Einführung in das Software-Engineering - -4- Dr. Walter Kuhn 2

Begriff Software Configuration Management () Eine Reihe von den SW-Engineering Prozess unterstützenden Tätigkeiten mit dem Ziel, Baselines, Versionen etc zu entwickeln. Dies umfasst Tätigkeiten und Techniken der Release- und Versionsbildung, des Management von Änderungen und Evaluation von Änderungen bei Software. Standards (ANSI) IEEE 828: Software Configuration Management Plans IEEE 1042: Guide to Software Configuration Management Nicht jedes Projekt benötigt Gross Projekte benötigen detaillierte Verfahren, um Versionen erfolgreich zu realisieren Kleine Projekte brauchen möglicherweise kein, dies ist u.u. zuviel Bürokratie Einführung in das Software-Engineering - -5- Agenda Motivation: Was ist Configuration Management und warum ist das nützlich Tätigkeiten, Rollen und Verantwortlichkeiten Zentrale Begriffe: Configuration Items, Baselines, Versionskontrolle Software Configuration Management Plan Standards (Beispiel: IEEE 828-1990) Grundelemente des IEEE 828-1990 Werkzeuge CVS Was ist CVS? CVS im Einsatz (Exkurs: Konflikte und Zugriffkontrolle) Hinweise Einführung in das Software-Engineering - -6- Dr. Walter Kuhn 3

Tätigkeiten Configuration item identification: Das Modellieren eines Systems als eine Menge sich ändernder Komponenten Promotion Management: Erzeugung einer Version für andere Entwickler Release Management: Erzeugung einer Version für Anwender und Kunden Branch Management: Organisation der Entwicklung mehrere paralleler Varianten Variant Management: Organisation der Entwicklung verschiedener Versionen Change Management: Überprüfung der Konsequenz einer Änderung, Zuweisung an eine Version, Überwachung Die Art, wie durchgeführt wird, kann sehr verschieden sein (formell, informell). Dies hängt vom Projekttypus und der entsprechenden Produktlebensphase ab (Forschungsstadium, Entwicklung, Wartung) Einführung in das Software-Engineering - -7- Rollen Configuration Manager Verantwortet die Identifikation relevanter Configruation Items. Verantwortet ggf. auch die Prozeduren für die Erzeugung von Releases und Versionen. Bestimmt Configuration items Definiert Promote und Release Richtlinien Definiert Verantwortlichkeiten Initiiert und trägt dafür Sorge, dass vorgegeben Standards, wie IEEE 828-1990, befolgt werden. Change control board member Verantwortet die Akzeptanz oder Ablehnung einer beantragten Änderung Developer Erzeugt Promotions auf Basis der Change Request im Zuge der normalen Entwicklungstätigkeiten. Überprüft auf Änderungen und dadurch bedingte Konsistenzprobleme und löst diese auf. Auditor Wählt und prüft Promotions für einen Release aus, stellt Konsistenz und Vollständigkeit einer Releases her. Einführung in das Software-Engineering - -8- Dr. Walter Kuhn 4

Agenda Motivation: Was ist Configuration Management und warum ist das nützlich Tätigkeiten, Rollen und Verantwortlichkeiten Zentrale Begriffe: Configuration Items, Baselines, Versionskontrolle Software Configuration Management Plan Standards (Beispiel: IEEE 828-1990) Grundelemente des IEEE 828-1990 Werkzeuge CVS Was ist CVS? CVS im Einsatz (Exkurs: Konflikte und Zugriffkontrolle) Hinweise Einführung in das Software-Engineering - -9- Begriff: Configuration Item An aggregation of hardware, software, or both, that is designated for configuration management and treated as a single entity in the configuration management process. (Software) configuration items: alle für die Entwicklung relevanten Dokumente Programm(texte) jeglicher Art Testtreiber, -Dokumentation, -Fall Dokumente aus OOA, OOD, Pflichtenheft, Manuals Software-System Konfigurationsinformationen (Versionen von Programmen, relevane Systemtabellen,..) Ggf. Hardware-System Konfigurationsdaten Eine Software-Konfiguration definiert zu einem Zeitpunkt die für eine Version aufeinander abgestimmten Configuration Items eines Produktes. Hilfreich: DB oder Konfigurationsidentifkationsdokument. Einführung in das Software-Engineering - -10- Dr. Walter Kuhn 5

Identifikation von Configuration Items Beobachtung: grosse Projekte haben viele Dokumente die eindeutig im Lebenszyklus zu identifizieren sein müssen. Aber nicht jedes Dokument muss über den ganzen Zeitraum versioniert sein. Kleine Projekte benötigen ggf. nur eine Endversion. Zu klären: Was soll in ein Versionsmanagement aufgenommen werden? Wann soll etwas ins Versionsmanagement aufgenommen werden? Beobachtung: zu frühe Aufnahme übertriebene Bürokratie. Zu späte Aufnahme Chaos. Langlebige Produkte benötigen Versionierung über Entwicklungszeit hinaus (Wartung von Kunden gefordert) Namensschema für verwandte Dokumente verwandte Namen Einführung in das Software-Engineering - -11- Konfigurationsbildung OO-Modellierung (Hierarchie von Klassen) ist konzeptionell brauchbar für Aggregierung von Configuration Items zu Konfigurationen Projekt Dilbert CI UML Modelle Subsysteme Sonstige Dokumente Klassenmodell Dynamische Modelle SQL-DDDL User Interface Pflichtenheft OOA OOD Code Daten Unit Test Einführung in das Software-Engineering - -12- Dr. Walter Kuhn 6

Begriff: Baseline A specification or product that has been formally reviewed and agreed to by responsible management, that thereafter serves as the basis for further development, and can be changed only through formal change control procedures. Beispiele: Baseline 1: Die Interfaces eine Java-Anwendung sind vollständig modelliert, nicht aber die Implementierung Baseline A: Ein Web-GUI ist realisiert, der Test soll folgen. Baseline xyz: Alle Datenzugriffsmethoden vorhanden, das GUI folgt. Einführung in das Software-Engineering - -13- Baselines (2) Während Entwicklung meist mehrere Baselines, oft in Folge eines Reviews oder Phasenwechsels erzeugt (Analyse-Review, Design Review, Code Review, System Test, End-Abnahme,..), z.b. Anforderungsbaseline Initiale Dokumentationen und Anforderungen Entwicklungs-Baseline (RAD, SDD, Integration Test,...) zur Koordination der Entwicklungstätigkeiten Functional Baseline (1. Prototype, Alpha Release, Beta Release), um erste Systemerfahrungen einzubringen Product Baseline (product): Verkauf, Verkaufsunterstützung, Support Pflegebaseline: langfristige Wartung Namensschema definieren! Bsp: 3 Ziffern-Schema x.y.z = Release.Version.Revision Revision: Änderung an einer Version, die nur Fehler behebt, keine neuen Funktionen Version: Initiale oder überarbeitetes Release eines Configuration Items, erbringt geänderte (meist neue) Funktionalität. Release: Formelle, offizielle Version, geprüft, getestet,.. zur Verteilung Einführung in das Software-Engineering - -14- Dr. Walter Kuhn 7

Versionen, Releases, Varianten, Pfade, Merge V 1.0 V 1.1 V 1.2 V 2.0 Release 1 Versionen Release.Version Release 2 Release 3 V 1.0 V 1.1 V 1.2 V 2.0 Merge V 3.0 V 1.1.1.0 V 1.1.2.0 V 1.1.1.1 Variante Release.Version. Branch.Sequence Varianten Einführung in das Software-Engineering - -15- Directories Programmer s Directory (IEEE: Dynamic Library) Repository, das vom Entwickler kontrolliert wird und gerade aktuelle, ggf. modifizierte Software beinhaltet. Master Directory (IEEE: Controlled Library) Zentrale verwaltetet Repository für die Verwaltung der gerade relevanten Baselines, Änderungen müssen berechtigt und überwacht sein, Einträge sollte geprüft sein. Software Repository (IEEE: Static Library) Archiv für alle Baselines, die in den Gebrauch kommen. Kuhn: Entwickler Rizotti: Entwickler Master Directory Bank 2000 Bank XP Einführung in das Software-Engineering - -16- Dr. Walter Kuhn 8

Change Management Change Management = Management von Change Requests (CR) Change Request (CR) = Anfrage einer Änderung (aufgrund neues Features, geänderter Bedingungen,..); führt zu einem neuen Release Ablauf Anwender, Entwickler, Stakeholder fordern eine Änderung -> CR Beantragt Prüfung der gewünschten Änderung auf Basis der Projektziele, Risiken, Kosten und Entscheid Annahme oder Ablehnung (meist durch ein Board) Annahme: Zuweisung der Änderung an die Entwicklung (Projektleiter oder direkt ein Entwickler) und Realisierung in der Entwicklung. Beauftragt Auditing des realisierten Changes und ggf. Übernahme in einen neuen Release. Erledigt Der CR-Prozess kann unterschiedlicher Komplexität (einfach, schnell, riskant oder formell, komplex, sicher) sein dies ist abhängig vom Projekt und seinen Risiken Einführung in das Software-Engineering - -17- Umgang mit Changes - Richtlinien Promotion: Neuer Zwischenstand einer Software intern erreicht. Release: Menge von Promotionen wird konsolidiert & ausserhalb der Entwicklung als Produkt verfügbar gemacht. Mehrstufiger Staging-Prozess kontrolliert Änderungen Sinnvoll: Richtlinien (Change policy): Wann darf wer unter welchen Bedingungen Software in einen neuen Zustand versetzen? Diese Richtlinien stellen sicher, dass jede Version, Release, Revision im Projekt anerkannte Kriterien erfüllt Beispiel: Kein Entwickler darf Code promoten, der nicht fehlerfrei übersetzt werden kann. Kuhn: Entwickler Bank 2000 Promotion Master Directory Release Rizotti: Entwickler Bank XP Einführung in das Software-Engineering - -18- Promotion Policy Release Policy Dr. Walter Kuhn 9

Planungsphase früh in ein Projekt integrieren Planungsphase ergibt den Software Configuration Management Plan (P), welcher selbst auch im Projekt weiterentwickelt werden kann Firmeneigene P oder offene Standard P, wie IEEE 828 Anmerkung: die meisten P wie IEEE 828 erlauben ein gewisses Mass an Anpassung (Tayloring), wie z.b. vorgegebene Formate. Einführung in das Software-Engineering - -19- Agenda Motivation: Was ist Configuration Management und warum ist das nützlich Tätigkeiten, Rollen und Verantwortlichkeiten Zentrale Begriffe: Configuration Items, Baselines, Versionskontrolle Software Configuration Management Plan Standards (Beispiel: IEEE 828-1990) Grundelemente des IEEE 828-1990 Werkzeuge CVS Was ist CVS? CVS im Einsatz (Exkurs: Konflikte und Zugriffkontrolle) Hinweise Einführung in das Software-Engineering - -20- Dr. Walter Kuhn 10

Software Configuration Management Plan Welche Arten von Dokumenten unterliegen der Definition eines Namensschemas für Dokumente Zuweisung von Verantwortlichkeiten für, Baseline,... Definition der Änderungsrichtlinien (change control, version management) Beschreibt die einzusetzenden Tools und deren Randbedingungen, insbesondere die notwendige Datenbank, um die Configuration Information selbst zu verwalten. Einführung in das Software-Engineering - -21- Aufbau eines -Plans nach IEEE 828-1990 1. Introduction Beschreibt Zweck und Scope der Anwendung, sowie Schlüsselbegriffe und Referenzen 2. Management (WHO?) Identifiziert Verantwortlichkeiten und Befugnisse zur Durchführung des geplanten Konfigurationsmanagements 3. Activities (WHAT?) Identifiziert die Aktivitäten, die fürs im Projekt angewandt werden müssen. 4. Schedule (WHEN?) Definition der Abfolge, Koordination und Integration der Tätigkeiten in den Projekt Plan und seinen Meilensteinen. 5. Resources (HOW?) Identifiziert notwendige Werkzeuge und Techniken, um den P umzusetzen. 6. Maintainance Identifiziert Tätigkeiten und Verantwortlichkeiten, um den während eines Projekte aktuell zu halten und ggf. zu adaptieren Einführung in das Software-Engineering - -22- Dr. Walter Kuhn 11

Agenda Motivation: Was ist Configuration Management und warum ist das nützlich Tätigkeiten, Rollen und Verantwortlichkeiten Zentrale Begriffe: Configuration Items, Baselines, Versionskontrolle Software Configuration Management Plan Standards (Beispiel: IEEE 828-1990) Grundelemente des IEEE 828-1990 Werkzeuge CVS Was ist CVS? CVS im Einsatz (Exkurs: Konflikte und Zugriffkontrolle) Hinweise Einführung in das Software-Engineering - -23- Tools RCS: alt aber bewährt, nur Versionskontrolle CVS: basiert auf RCS, ermöglicht konkurrierende Zugriff ohne Locking Perforce: Repository Server ClearCase: Mehrfache Server, Prozess Modellierung, Policy Mechanismen Einführung in das Software-Engineering - -24- Dr. Walter Kuhn 12

CVS = Concurrent Version System Weit verbreitetes Tool Versionskontrolle Mehr-Benutzer-System Versionsverwaltung kompletter und ggf. mehrstufiger Dateiverzeichnisse Open Source Verfügbarkeit auf vielen (UNIX) Systemen Vielfalt an Clients (Windows, Web,..) WinCVS CVS-Integration Jbuilder CVS-Integration TogetherJ tkcvs TortoiseCVS (CVS-Integration in Explorer) Einführung in das Software-Engineering - -25- CVS Eigenschaften Zentrales Repository: vollständiger Dateibaum verschiedener Projekte mit den dazugehörigen Verzeichnissen, Dateien und deren Versionen. Benutzer erzeugen aus CVS private Arbeitskopien eines zu einem Projekt gehörenden Dateibaums Hier Dateien beliebig ändern, Dateien & Verzeichnisse erzeugen oder entfernen CVS verwendet Optimistische Strategie (Modify/Merge) => Keine expliziten Sperren auf Dateien mehrere Personen können die gleiche Datei ändern. Etwaige Konflikte werden später aufgelöst: Nach Änderungen zunächst Abgleich mit der Version im Repository, ggf. Konflikte mit anderen Änderungen auflösen, anschließend in das Repository eintragen. Kommandozeilen Befehle: allgemeine Syntax cvs globalopt command commandopt Einführung in das Software-Engineering - -26- Dr. Walter Kuhn 13

CVS im Einsatz - Begriffe Master Directory und auch Software Repository Working Copy = Programmer s Directory (seine lokales Verzeichnis) V 1.0 V 1.1 Checkout Commit + Logbuch Eintrag V 1.0 Versionen von CVS verwalteter Komponenten Bearbeiten CVS Revision = bestätige Änderung entweder eine Promotion oder ein Release Einführung in das Software-Engineering - -27- CVS im Einsatz - Branch und Tags mybank.java 1.0 Dilbert s Variante (Branch) 1.0.1.1 Dilbert s First Release 1.1 1.2 Dogbert s Better Release Tag Tag Aktuelle Version Einführung in das Software-Engineering - -28- Dr. Walter Kuhn 14

CVS Aufruf (Unix-Shell) Konfiguration: Pfad zum Repository (hier remote) export CVSROOT=:pserver:team@myserver:/users/groups/... Neues Repository (in einem Verzeichnis) cvs init Projekt in das CVS importieren cvs import m First Import prj prj firstimport Arbeitskopie vom CVS-Server ins aktuelle Verzeichnis cvs checkout prj CVS legt dabei notwendige Hilfsstrukturen an Dateien bearbeiten cvs edit files Gegenstück: unedit Änderungen ins CVS-Repository einspielen => Commit cvs commit m Exceptionbehandlung integriert Einführung in das Software-Engineering - -29- CVS Aufruf (Unix-Shell) (2) Änderungen aus Repository Update der lokalen Files. Ggf Konfliklösung notwendig cvs update -d Bestimmte Versionen laden cvs update r 1.4 D 2002-04-30 Dateien hinzufügen cvs add [-kb] files Dateien löschen (Markierung) cvs remove files Informationen abfragen cvs log cvs status cvs diff (hilfreich für Änderungeprüfung) Zugriff auf ein lokales Repository cvs -d /usr/local/cvs command Zugriff auf ein remote Repository cvs d :pserver:metoo@cvsifi.unibas.ch:/usr/local/cvs login Einführung in das Software-Engineering - -30- Dr. Walter Kuhn 15

Konfliktlösung Bei Einspielen eigener Änderungen: jede geänderte Datei wird genannt zusammen mit einem Indikator Updated : Änderungen aus dem Repository wurden ohne Konflikte in die Arbeitsdatei übernommen. Modified: Entweder wurde die Arbeitsdatei oder Datei im Repository verändert. Arbeitsdatei geändert: Änderungen werden beim committ ins Repository übertragen Repository geändert: Änderungen sind in die Arbeitsdatei gemischt, ohne daß Konflikte aufgetreten sind Removed: Arbeitsdatei wird auch im Repository gelöscht. Added : Arbeitsdatei wird neu ins Repository aufgenommen.? : Arbeitsdatei: Keine korrespondierende Datei im Repository Conflicts: Konflikte zwischen Änderungen in der Arbeitsdatei und Änderungen im Repository Einführung in das Software-Engineering - -31- Exkurs: Konflikte und Zugriffskontrolle Zugriffskontrolle: Was passiert mit den Dateien/Versionen, wenn mehrere Benutzer die gleichen Dateien bearbeiten wollen? Verbreitete Change Control Policies: Pessimistic: Lock/Modify/Unlock Liberal: Brancherzeugung Optimistic: Modify/Merge CVS verwendet den optimistischen Ansatz Einführung in das Software-Engineering - -32- Dr. Walter Kuhn 16

Exkurs: Konservative Zugriffskontrolle Sperre gesetzt durch Checkout 1. Check Out (2.1) Kuhn: Entwickler V 2.5 V 1.0 V 2.5 2. Check Out (2.1) Locked by Kuhn Rizotti: Entwickler V 1.0 Einführung in das Software-Engineering - -33- Exkurs: Liberale Zugriffskontrolle Keine Sperre => Parallele Bearbeitung mit Erzeugung einer Nebenrevision V 2.5 1. Check Out (2.5) 3. Check In (=>2.6) 2. Check Out (2.5) Kuhn: Entwickler V 2.5 Rizotti: Entwickler V 2.5 4. Check In (=>2.5.1) Nebenrevision! Einführung in das Software-Engineering - -34- Dr. Walter Kuhn 17

Exkurs: Optimistische Zugriffskontrolle Keine Sperre => Parallele Bearbeitung Kuhn: Entwickler 1. Check Out (2.5) V 2.5 3. Check In (=>2.6) V 2.5 Rizotti: Entwickler 2. Check Out (2.5) V 2.5 4. Check In (=>Konflikt) 5. Änderungen abgleichen (Update) 6. Check In (2.7) Einführung in das Software-Engineering - -35- Exkurs: Update: 3 Wege Verschmelzen Ziel: alle Änderungen übernehmen Aber: das ist nicht immer (fachlich) korrekt Alternative1 Original Alternative2 1 modifiziert 2 3 eingefügt 3,5 4 4 1 2 3 4 1 2 4 5 Zeile 3 gelöscht 5 eingefügt modifizierte Zeilen eingefügte Zeilen 1 2 3,5 4 5 Automatisch erzeugte Mischversion gelöschte Zeilen Einführung in das Software-Engineering - -36- Dr. Walter Kuhn 18

Exkurs: Konflikte beim Verschmelzen Alternative1 Original Alternative2 1 2 3 3,5 4 4 modifiziert 1 2 3 4 modifiziert 1 2 4 5 Automatisch erkannt und angezeigt Aber manuelle Korrektur 1 2 3,5 4 o. 4 5 Konflikt... <<<<<<< test.txt Eigene Version ======= Neue Version 2.5 aus Repository >>>>>>> 2.5... Einführung in das Software-Engineering - -37- Tags CVS bietet die Möglichkeit, Versionsinformationen in Texte automatisch einzubinden Herkunft von RCS. Bsp.: $Author $Date $Version... Werden jeweils ersetzt durch die im Repository dazu hinterlegten Informationen. Damit kann in ein Dokument, z.b. ein Programm die Versionsinformation automatisch abgelegt werden, und etwa programmtechnisch angezeigt werden. Einführung in das Software-Engineering - -38- Dr. Walter Kuhn 19

Hinweise Update vor Commit Nur Lauffähiges commiten Nur zu bearbeitende Dateien auschecken Binärdateien möglichst vermeiden CVS auf Textdateien spezialisiert Dateien nur an wenigen Stellen bearbeiten Kommunikation und Absprachen nicht vergessen CVS-Administrator bestimmen Nur im lokalen CVS-Verzeichnis arbeiten (Arbeitskopie) Verwendung des Dateisystem des Betriebssystems nicht manuell rumspielen Das CVS-Repository Verwaltung und Speicherung der Versionsänderungen (Deltatechnik) bei Textdateien Logging und Locking Benutzer-Authentifizierung CVS Man-Page studieren! Einführung in das Software-Engineering - -39- Literatur http://www.cvshome.org Cederqvist P., et al, CVS Manual: Version Management with CVS Estublier J., Software Configuration Management: A Roadmap, In: Proc. of the 22nd Int. Conf. on the Future of Software Engineering, p. 279-289, ACM, 2000 Fogel K., Open Source Development with CVS, Corolis Inc., 2000 http://www.cyclic.com http://www.wincvs.org Einführung in das Software-Engineering - -40- Dr. Walter Kuhn 20