Versionsverwaltung für Visual Studio .NET mit Subversion Udo Pracht 08.05.2007
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) Andere Versionsverwaltungs-Systeme: Wikis CMS Beispiele für automatisierte Build-Umgebungen (Continuous Integration): CruiseControl.Net Draco.Net
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 TFSC wird in der Microsoft-Dokumentation teilweise auch als Team Foundation Source Control (TFSC) bezeichnet.
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 "Lock Modify Write" = Pessimistic Revision Control "Copy Modify Merge" = Optimistic Revision Control
Vergleich ausgewählter VCS
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 TortoiseSVN AnkhSVN svn ... http(s):// svn(s):// Network Subversion Server Communication and Access Modules UIs Apache httpd svnserve file:// mod_dav_svn svn Repository Berkeley-DB 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 Befehl um svnserve als Windows-Service zu installieren: sc create svn binpath= "C:\Programme\Subversion\bin\svnserve.exe --service --root C:\SVN-Repository" displayname= "Subversion Server" depend= Tcpip start= auto
Subversion in der Praxis Grafische Clients & Explorer-AddIns: TortoiseSVN, RapidSVN, SmartSVN und weitere Visual Studio AddIns: AnkhSVN (Open Source) vs. VisualSVN (kommerziell) AnkhSVN Add to Repository: "File\Add solution to Subversion repository …" Configure DiffExePath: "C:\Programme\TortoiseSVN\bin\TortoiseMerge.exe" /base:"%base" /mine:"%mine" Configure MergeExePath: "C:\Programme\TortoiseSVN\bin\TortoiseMerge.exe" /base:%base /theirs:%theirs /mine:%mine /merged:%merged
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