Versionsverwaltung für Visual Studio .NET mit Subversion Udo Pracht 08.05.2007 EMail: [email protected] Web: www.udo-pracht.de Inhalt Versionsverwaltung Vergleich ausgewählter Systeme Subversion Funktionsweise und Architektur Installation Subversion in der Praxis Grafische Clients & Explorer-AddIns Visual Studio AddIns Konzepte des Entwicklungsprozesses mit Subversion (Checkout, Lock, Update, Merge, Tags und Branches) Begriffe Version Control System (VCS) oder Source Code/Control Managementsystem (SCM) = Versions-/Quelltext-Verwaltung Software Configuration Management (SCM) = Versionsverwaltung + Build-Umgebung (evtl. automatisiert) Ausgewählte VCS Concurrent Versions System (CVS) Subversion (SVN) Visual Source Safe (VSS) Team Foundation Version Control (TFVC) Hier nicht betrachtet: Rational ClearCase (kommerziell) BitKeeper (kommerziell, Linuxkernel bis 2005) Telelogic Synergy/CM (kommerziell, ehemals Continuus) Serena PVCS Version Manager (kommerziell, ehemals Merant PVCS) + weitere kommerzielle System und viel konkurrierende OSS-Projekte Ausgewählte VCS-Kriterien Visual Studio Integration Atomare Commits Umbenennen mit Versionshistorie Branching (Verzweigungen) Arbeitsweisen ("Lock Modify Write" vs. "Copy Modify Merge") (Netzwerk-)Zugriffsarten Umgang mit Binärdaten Vergleich ausgewählter VCS Visual Studio Integration Ablage Atomare Commits Verschieben & Umbenennen mit Versionshistorie Branching Arbeitsweise (Netzwerk-)Zugriff Umgang mit Binärdaten CVS Ja Dateisystem Nein Nein SVN Ja Berkeley-DB oder Dateisystem Ja Ja VSS Ja Dateisystem TFVC Ja SQL Server Nein Ja nur über VSS-Client Ja Nein Ja nur über VSS-Client Copy Modify Merge beide Lock Modify Write proprietäres WebDAV/HTTP(S) proprietäres Protokoll oder eigenes Protokoll Protokoll komplett Differenz komplett Ja beide HTTP(S) + Web Service (cachebar mit Team Foundation Server Proxy) Differenz Subversion Konzeptionelle Weiterentwicklung von CVS aber komplett unabhängiges Projekt Entwicklung seit 2000, initiiert durch CollabNet Version 1.0 am 23. Februar 2004 Aktuelle Version: 1.4.3 (Stand Mai 2007) Open Source Programmiert in C Projekt umfasst: Serverkomponenten und Commandline-Tools Ablage des Repository: Dateisystem ("FSFS", Default) oder Berkeley-DB ("BDB") Subversion - Architektur Remote Client User Interfaces Network Subversion Server TortoiseSVN AnkhSVN http(s):// Communication and Access Modules Repository svn svn(s):// UIs Apache httpd svnserve mod_dav_svn Berkeley-DB ... file:// svn Filesystem Subversion – Serverseitige Installation SVN-Setup (svn-1.4.3-setup.exe) durchführen Repository anlegen ("svnadmin create <path>" oder per TortoiseSVN) Wenn Zugriff über HTTP/HTTPS gewünscht: Apache-Setup (mit oder ohne SSL) durchführen (Achtung: Version 2.0.59 !) httpd.conf anpassen bzw. prüfen (LoadModule-Befehle für SVN-WebDAV) Location-Direktive für freizugebende Repository in httpd.conf erstellen Ggf. Apache Password-Datei erstellen Wenn Zugriff über svn-Protokoll gewünscht: Zugriff für das Repository über svn-Protokoll in svnserve.conf konfigurieren Passwort-Datei erstellen (Achtung: unverschlüsselt ! ) svnserve als Windows-Service starten ("sc create …") Evtl. Firewall-Einstellungen anpassen Subversion in der Praxis Grafische Clients & Explorer-AddIns: TortoiseSVN, RapidSVN, SmartSVN und weitere Visual Studio AddIns: AnkhSVN (Open Source) vs. VisualSVN (kommerziell) Entwicklung mit Subversion Anlegen eines Repository Einchecken der Sourcen Erstmaliges Abrufen eines Repository Update & Commit Lock Merge Tags Branches Links Subversion http://subversion.tigris.org/ TortoiseSVN http://tortoisesvn.tigris.org/ AnkhSVN http://ankhsvn.tigris.org/ VisualSVN http://www.visualsvn.com/ Weiterführendes Installation & Konfiguration: Visual Studio 2005 + Subversion http://vb-magazin.de/forums/blogs/janm/archive/2007/01/02/6893.aspx Anleitung Installation von Subversion in einer .NET Entwicklungsumgebung http://www.aspheute.com/artikel/20040225.htm Vortrag von Dr. Holger Schwichtenberg auf der OOP 2007 http://www.sigs.de/download/oop_07/Schwichtenberg%20Di8-2%20Update.pdf Dispelling Subversion FUD http://www.red-bean.com/sussman/svn-anti-fud.html