Dr. Holger Schwichtenberg
Transcription
Dr. Holger Schwichtenberg
Varianten und Versionen verwalten in .NET-Anwendungen Dr. Holger Schwichtenberg Version 1.2 / 22.01.2007 Softwarearchitekt Berater Dozent Fachjournalist Dr. Holger Schwichtenberg [email protected] • • • • • • • • • • Dr. Holger Schwichtenberg 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 [email protected] Community Website http://www.dotnetframework.de Weblog http://www.dotnet-doktor.de Seite 2 1 Dr. Holger Schwichtenberg [email protected] Vortrags-FAQ Folienpräsentation? Ja Download der Präsentation? http://www.IT-Visions.de/v4544.aspx Live-Vorführungen? Download der Beispiele? Zwischenfragen? Zeit für Fragen am Ende? Fragen, die mir erst später einfallen? Schulung, Beratung, Support Ja Keine Beispiele, die sich zum Download lohnen würden… ☺ Bitte nicht, wenn möglich ☺ Ja! http://www.IT-Visions.de/Foren oder [email protected] http://www.IT-Visions.de/Produkte Seite 3 Dr. Holger Schwichtenberg [email protected] • • • • • 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 Dr. Holger Schwichtenberg [email protected] 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 Dr. Holger Schwichtenberg [email protected] 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 Dr. Holger Schwichtenberg [email protected] Versionsverwaltung Versionsverwaltungssystem Version Control System - VCS Seite 8 Dr. Holger Schwichtenberg [email protected] Variantenverwaltung Seite 9 4 Dr. Holger Schwichtenberg [email protected] 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 Dr. Holger Schwichtenberg [email protected] 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 ShellSkripten • 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) Dr. Holger Schwichtenberg [email protected] • • • • • • 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 Dr. Holger Schwichtenberg [email protected] 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 Dr. Holger Schwichtenberg [email protected] Merging Seite 15 7 Konzepte (3) Konfigurationselemente Dr. Holger Schwichtenberg [email protected] • 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 Dr. Holger Schwichtenberg [email protected] Konzepte (4) Markierungen und Verzweigen • Wichtige Punkte – Tags/Labels – Baseline – Release • Branching (Verzweigen) für – Varianten/Produktversionen – Experimentelle Entwicklungen – Bugfixing Seite 17 8 Dr. Holger Schwichtenberg [email protected] Tagging und Baselines Quelle: G. Popp: Konfigurationsmanagement, S. 41 Dr. Holger Schwichtenberg [email protected] Seite 18 Branching Seite 20 9 Dr. Holger Schwichtenberg [email protected] 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" Dr. Holger Schwichtenberg [email protected] Seite 21 Konzepte (6) • Nachverfolgbarkeit – Verbindung mit Aufgaben, Bugreports und Builds • Eincheckrichtlinien • Genehmigung, z.B. Anforderungen des SarbanesOxley-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 Dr. Holger Schwichtenberg [email protected] Herausforderungen • Versionsgeschichte erhalten beim – Umbenennen – Bewegen – Kopieren Seite 23 Dr. Holger Schwichtenberg [email protected] 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 Dr. Holger Schwichtenberg [email protected] 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 Dr. Holger Schwichtenberg [email protected] • • • • • • Ergänzende Konzepte Anforderungsmanagement Statische Codeanalyse Modultests (Unit Tests) Übersetzungsmanagement (Build Management) Continous Integration Fehlermanagement (Bugtracking) Seite 28 12 Dr. Holger Schwichtenberg [email protected] • • • • 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 Dr. Holger Schwichtenberg [email protected] • Open Source Werkzeuge (Beispiele) – – – – – – – – CVS Subversion OpenCM Arch Monotone Superversion Git (Linux Torvalds) … – – – – – – – – – Perforce BitKeeper CMSynergy IBM Rational ClearCase Borland Starteam Serena Version Manager Microsoft Visual SourceSafe (VSS) Microsoft Team Foundation Version Control (TFVC) … Architekturunterschiede: Client-Server (z.B. Perfore, Subversion) Filesharing (z.B. Subversion oder VSS) • Kommerziell Dr. Holger Schwichtenberg [email protected] Seite 32 Visual SourceSafe Seite 33 14 Dr. Holger Schwichtenberg [email protected] 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 Dr. Holger Schwichtenberg [email protected] 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 Dr. Holger Schwichtenberg [email protected] 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 Dr. Holger Schwichtenberg [email protected] svn.exe Quelle: G. Popp: Konfigurationsmanagement, S. 103 Seite 37 16 Dr. Holger Schwichtenberg [email protected] Tortoise SVN Seite 38 Dr. Holger Schwichtenberg [email protected] AnkhSVN Seite 39 17 Dr. Holger Schwichtenberg [email protected] Schritte DEMO • Anlegen eines SVN-Repositories • Starten des SVN-Servers | Starten des SVN-Servers als WindowsSystemdienst • • • • • Festlegen der Exclude-Pattern Import der Basis-Verzeichnisstruktur Auschecken Hineinkopieren vorhandener Dateien Einchecken! • Ändern – Kompilieren – Aktualisieren – Konflikte lösen – Kompilieren – Aktualisieren – Einchecken Seite 40 Dr. Holger Schwichtenberg [email protected] 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 Dr. Holger Schwichtenberg [email protected] CruiseControl.NET (CCNet) Seite 42 Dr. Holger Schwichtenberg [email protected] • Quellcodeverwaltung – – – – – – – – – – Integrierbare Werkzeuge 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 Dr. Holger Schwichtenberg [email protected] 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 Dr. Holger Schwichtenberg [email protected] Server • ccnet.exe (optional als Windows Dienst) • Anwendungskonfigurationsdatei • ccnet.config Seite 45 20 Dr. Holger Schwichtenberg [email protected] CCTray Seite 46 Dr. Holger Schwichtenberg [email protected] Web Dashboard Seite 47 21 Process and Architecture Guidance Quelle:Microsoft Visual Studio Visual Studio Visual Studio Team Architect Team Developer Team Test Application Modeling Dynamic Code Analyzer Load Testing Logical Infra. Modeling Static Code Analyzer Manual Testing Deployment Modeling Code Profiler Test Case Management Unit Testing Code Coverage Class Modeling Visio and UML Modeling Team Foundation Client VS Pro Visual Studio Team Foundation Dr. Holger Schwichtenberg [email protected] • • • • • • • Change Management Reporting Integration Services Work Item Tracking Project Site Project Management Visual Studio Industry Partners Visual Studio 2005 Team System Dr. Holger Schwichtenberg [email protected] 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 Dr. Holger Schwichtenberg [email protected] TFVC Seite 51 Dr. Holger Schwichtenberg [email protected] Bücher Seite 52 23 Dr. Holger Schwichtenberg [email protected] 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 Dr. Holger Schwichtenberg [email protected] Fragen? Seite 54 24 Dr. Holger Schwichtenberg [email protected] • • • • • 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 [email protected] Seite 55 25