Varianten und Versionen verwalten in.net-anwendungen Softwarearchitekt Berater Dozent Fachjournalist Version 1.2 / 22.01.2007 Dr. rer. pol. Diplom-Wirtschaftsinformatiker MVP,.NET Code Wise Member, MCSD seit 1996 Softwareentwicklung mit Windows COM/.NET Heute: Firma www.it-visions.de (Sitz: Essen) 50%: Architektur, Design, Entwicklung (.NET!) 50%: Beratung, Schulungen, Coaching, Fachartikel, Fachbücher, Konferenzvorträge Fachjournalist ix, DOTNETpro, Computer Zeitung, Windows IT Pro, OBJEKTSpektrum, PC Magazin, MSDN Online, u.a. Buchautor Addison-Wesley, Microsoft Press, WEKA Media Vortragender nationale und internationale Fachkonferenzen (TechEd, OOP, ADC, BASTA, IT Forum, STC, WI, Net.Object Days, etc.) Kontakt Community Website http://www.dotnetframework.de Weblog http://www.dotnet-doktor.de Seite 2 1
Vortrags-FAQ Folienpräsentation? Live-Vorführungen? Download der Präsentation? Download der Beispiele? Zwischenfragen? Zeit für Fragen am Ende? Fragen, die mir erst später einfallen? Schulung, Beratung, Support Ja Ja http://www.it-visions.de/v4544.aspx Keine Beispiele, die sich zum Download lohnen würden Bitte nicht, wenn möglich Ja! http://www.it-visions.de/foren oder http://www.it-visions.de/produkte Seite 3 Inhalt Was ist Versionsverwaltung? Konzepte der Versionsverwaltung Versionsverwaltungswerkzeuge Subversion Team Foundation Version Control Ziele: Überzeugen, Versionsverwaltung einzusetzen Kriterien für Werkzeugentscheidung Ihnen helfen, die eigene Strategie zu validieren Seite 4 2
Eine kleine Geschichte Es war einmal ein einzelner Softwareentwickler Der war mit seiner Software Q&D (Quick&Dirty) sehr erfolgreich. Jeden Abend erstellte er ein auf einem von sieben Magnetbändern ein rollierendes Backup seiner Sourcen Als er schon längst an Version 3.0 arbeitete, rief ein Kunden, der Version 1.0 verwendete: Er hatte einen Fehler gefunden. Der Entwickler hatte aber den Quellcode von Version 1.0 nicht mehr und musste daher auf Version 2.0 aktualisieren. Seite 5 Wer sind Sie? Nutzen Sie Versionsverwaltung? O Ja, seit 2 oder mehr Jahren Jahren O Ja, seit weniger als 2 Jahren O Nein, noch nicht Seite 6 3
Versionsverwaltung Versionsverwaltungssystem Version Control System - VCS Seite 8 Variantenverwaltung Seite 9 4
Ziele der Versionsverwaltung Sicherstellen der Verfügbarkeit der Dateien Gewährleisten der Integrität, insbesondere bei gleichzeitiger Nutzung Verhinderung unberechtigter Zugriffe Sicherstellen der Nachvollziehbarkeit Seite 10 Geschichte der ("freien") Versionsverwaltung Anfang der 70er: Marc Rochkind, AT&T: Source Code Control System (SCCS) 1985: Walter Tichy, Purdue University: Revision Control System (RCS) 1986: Dick Grune: Concurrent Versions System (CVS) auf Basis von Shell- Skripten 1989: Jeff Polk und Brian Berliner: Concurrent Versions System (CVS) in C 2000-2004: Karl Fogel, CollabNet: Subversion Seite 11 5
Konzepte (auch: Kriterien für die Auswahl von Versionsverwaltungssystemen) Konzepte (1) Versionsverfolgung (Archivierung, Wiederherstellen) Repository vs. Arbeitskopie Check-Out / Check-In (Commit) Exportieren Revisionsnummern (lokal global) Geschichte (History) Dateiebene Zeilenebene Vergleichen der Versionen (Diff-Tool) Kommentieren der Versionen Attributieren (Metadaten) Seite 13 6
Konzepte (2) Paralleles Arbeiten Koordinierung des gemeinsamen Zugriffs Sperren (Lock Modify Write LMW ) aka. Pessimistischer Checkout Mischen (Copy Modify Merge - CMM) aka. Optimistischer Checkout Mischen: Keine gegenseitige Behinderung Konflikte können auftreten (nur zum Teil automatische Lösung) Sperren Keine Konflikte zu lösen Aber möglicherweise Behinderung Seite 14 Merging Seite 15 7
Konzepte (3) Konfigurationselemente Was kann man unter Versionsverwaltung stellen? Nur nicht Quellcode, beliebige Dateien Einzelne Dateien oder ganze Verzeichnisse Was sollte man unter Versionsverwaltung? Quellcode inkl. Tests Anforderungsdokumente, Buildskripte, Schnittstellenverträge, Was könnte man unter Versionsverwaltung stellen? Generierte Dokumentation Andere Artefakte, die aus dem Code gewonnen werden können Werkzeuge, Bibliotheken Was sollte man nicht unter Versionsverwaltung stellen? Kompilate Was macht Probleme? Entwicklertools, die binären Dateien/Datenbanken häufig ändern (z.b. Datenbanken von Codegeneratoren) Seite 16 Konzepte (4) Markierungen und Verzweigen Wichtige Punkte Tags/Labels Baseline Release Branching (Verzweigen) für Varianten/Produktversionen Experimentelle Entwicklungen Bugfixing Seite 17 8
Tagging und Baselines Quelle: G. Popp: Konfigurationsmanagement, S. 41 Seite 18 Branching Seite 20 9
Konzepte (5) Zentrale vs. Verteilte Versionsverwaltung Shelving Zugang zum Repository Online / Offline arbeiten Protokoll Zentrale Versionsverwaltung: Ein Repository n Arbeitskopien Verteilte Versionsverwaltung Jeder Entwickler hat sein eigenes Repository Ein priviligertes Master-Repository "Remote Repository Replication" "Propagating Changes to Parent Repositories" Seite 21 Konzepte (6) Nachverfolgbarkeit Verbindung mit Aufgaben, Bugreports und Builds Eincheckrichtlinien Genehmigung, z.b. Anforderungen des Sarbanes- Oxley-Act (SOX) Berechtigungen (Zugriffsrechte) Change Sets / Transaktionen Effizientes Speichern der Versionen Deltaalgorithmen nur Unterschiede, um Plattenplatz zu sparen Rückwärts vs. Vorwärtsdelta Kopieren oder Verlinken Kompression Seite 22 10
Herausforderungen Versionsgeschichte erhalten beim Umbenennen Bewegen Kopieren Seite 23 Typische Operationen für Nutzer von Versionsverwaltungsystemen Externe Dateien einspielen (Import) Dateien auschecken Letzte Version Bestimmte Version Dateien sperren / entspreen Änderungen einchecken Änderungen rückgängig machen Dateioperationen: Löschen, Bewegen, Hinzufügen Aktualisierungen abrufen / Dateien zusammenfügen Dateien vergleichen Änderungskonflikte lösen Versionsgeschichte anzeigen Metadaten setzen Seite 26 11
Der CheckIn-Vorgang Falsch: Ändern Kompilieren Einchecken Besser: Ändern Kompilieren Testen Einchecken Richtig: Ändern Kompilieren Testen Aktualisieren Konflikte lösen Kompilieren Testen Aktualisieren Einchecken Seite 27 Ergänzende Konzepte Anforderungsmanagement Statische Codeanalyse Modultests (Unit Tests) Übersetzungsmanagement (Build Management) Continous Integration Fehlermanagement (Bugtracking) Seite 28 12
Was lernen wir? Ohne Versionsverwaltung geht es nicht Mit Versionsverwaltung viele Punkte zu beachten Versionsverwaltung erledigt sich nicht nebenbei Zeit in Projektplan einplanen, um Projekt zu konfigurieren und Versionsverwaltungssystem zu warten Seite 30 Werkzeuge 13
Werkzeuge (Beispiele) Open Source CVS Architekturunterschiede: Subversion Client-Server (z.b. Perfore, Subversion) OpenCM Arch Filesharing (z.b. Subversion oder VSS) Monotone Superversion Git (Linux Torvalds) Kommerziell Perforce BitKeeper CMSynergy IBM Rational ClearCase Borland Starteam Serena Version Manager Microsoft Visual SourceSafe (VSS) Microsoft Team Foundation Version Control (TFVC) Seite 32 Visual SourceSafe Seite 33 14
Source Code Control API (SCC) Schnittstelle für Versionsverwaltung Definiert von Microsoft Server VSS TFVC Andere Hersteller auch für Unix und Mac Clients Visual Studio Borland Macromedia Diverse Editoren (PrimalScript, Slick Edit, etc.) Seite 34 Subversion (SVN) Quellcodeversionsverwaltungssystem Open Source / Nachfolger von CVS Funktionen: Windows, Linux, Unix, Mac Zugriff lokal, über TCP (3690) oder HTTP (Apache) Datenbanksystem Berkeley DB oder fsfs Platzsparende Verwaltung von Binärdaten Zahlreiche Clients (Windows Explorer, VS, Eclipse, Emacs, ) Atomare Check-Ins Vergleich: Subversion vs. MS VSS vs. Perforce siehe ix 9/2004! Seite 35 15
Subversion-Clients Svn.eve Kommandozeilenclient (svn.exe) TortoiseSVN (http://tortoisesvn.tigris.org/) Client für Windows Explorer Integration mit "beliebigen" Bug/Issue Tracking System AnkhSVN: Client für Visual Studio (http://ankhsvn.tigris.org/) Einchecken/Auschecken Exportieren eines Projekts nach SVN Integration eines bereits unter SVN-Verwaltung stehenden Verzeichnisses in VS Visual SVN Basiert auf Tortoise SVN $49 Seite 36 svn.exe Quelle: G. Popp: Konfigurationsmanagement, S. 103 Seite 37 16
Tortoise SVN Seite 38 AnkhSVN Seite 39 17
Schritte DEMO Anlegen eines SVN-Repositories Starten des SVN-Servers Starten des SVN-Servers als Windows- Systemdienst Festlegen der Exclude-Pattern Import der Basis-Verzeichnisstruktur Auschecken Hineinkopieren vorhandener Dateien Einchecken! Ändern Kompilieren Aktualisieren Konflikte lösen Kompilieren Aktualisieren Einchecken Seite 40 CruiseControl.NET (CCNet) Integration als Teil der täglichen Aktivitäten wenigstens einmal am Tag CruiseControl.NET Server = Automated Integration Server Überwachen des Quellcodeverwaltungssystems Kompilieren der Anwendungen Benachrichtigung der Entwickler über den Erfolg (EMail oder CCTray) Hersteller: ThoughtWorks, Open Source Version 2.5 http://sourceforge.net/projects/ccnet/ http://confluence.public.thoughtworks.org/display/ccnet/ Seite 41 18
CruiseControl.NET (CCNet) Seite 42 Integrierbare Werkzeuge Quellcodeverwaltung CVS Subversion VSS Perforce Rational ClearCase SoureGead Vault PVCS StarTeam MKS Source Integriry Telelogic Synergy Build NAnt VSNET MSBuild Test NUnit MSTest FxCop NCover Vil Simian MBUnit Seite 43 19
Trigger Trigger bestimmen, wann CCNet einen neuen Integrationszyklus startet Interval Trigger (alle x Sekunden, Standard: 60) Schedule Trigger (Wochentag, Uhrzeit) Filter Trigger (verhindern zu bestimmten Zeiten) Project Trigger (ein anderes Projekt wurde erfolgreich erzeugt) URL Trigger (wenn eine Webseite sich geändert hat, reduziert Last für Quellcodeverwaltungssysteme, die automatisch Websites erzeugen können) Seite 44 Server ccnet.exe (optional als Windows Dienst) Anwendungskonfigurationsdatei ccnet.config Seite 45 20
CCTray Seite 46 Web Dashboard Seite 47 21
Quelle:Microsoft Visual Studio 2005 Team System Process and Architecture Guidance Visual Studio Team Architect Application Modeling Logical Infra. Modeling Deployment Modeling Class Modeling Visio and UML Modeling Visual Studio Team Developer Dynamic Code Analyzer Static Code Analyzer Code Profiler Team Foundation Client VS Pro Unit Testing Code Coverage Visual Studio Team Test Load Testing Manual Testing Test Case Management Visual Studio Industry Partners Visual Studio Team Foundation Change Management Work Item Tracking Reporting Project Site Integration Services Project Management Seite 49 Team Foundation Version Control (TFVC) Nicht zu verwechseln mit Visual Source Safe (VSS) Teil des Team Foundation Server TFVC ist eine komplette Neuentwicklung VSS: "bis zu 5 Benutzer" TFVC: "5 bis 500 Benutzer" Migration von VSS wird unterstützt Werkzeuge Visual Studio Kommandozeilenwerkzeug tf.exe Team Foundation Object Model Source Control API Interessante Funktionen: Shelving Eincheckrichtlinien Nachverfolgbarkeit (Verbindung mit Aufgaben und Bugreports) Seite 50 22
TFVC Seite 51 Bücher Seite 52 23
Links & Artikel H. Schwichtenberg, M. Weidner: Geschichtsschreiber - Versionsverwaltungssysteme im Vergleich, ix 9/2004 Liste von Werkzeugen http://de.wikipedia.org/wiki/liste_der_versionsverwaltungsprogra mme Subversion http://subversion.tigris.org/ Team Foundation Server http://www.microsoft.com/germany/msdn/vstudio/products/team system/team/default.mspx Version Control System Comparison http://better-scm.berlios.de/comparison/comparison.html Subversion vs. Clearcase http://www.pti.co.il/clearcase_vs_subversion.html Seite 53 Fragen? Seite 54 24
Brauchen Sie Unterstützung bei.net/asp.net? Beratung bei Einführung, Migration und Betrieb (Vor-Ort-)Schulungen, Workshops Coaching (Vor-Ort Telefon E-Mail Online-Meeting) Support (Vor-Ort Telefon E-Mail Online-Meeting) Entwicklung von Prototypen und Lösung http://www.it-visions.de/produkte Telefon 0201/7490700 Seite 55 25