230 likes | 482 Views
PowerBuilder und SVN . Erste Schritte bei der Versionsverwaltung von Softwareprojekten mit Subversion (SVN). PowerBuilder und SVN. Agenda Einrichten eines einfachen SVN Servers Projekt/Verzeichnisstrukturen vorbereiten Projekt in die Versionsverwaltung aufnehmen PowerBuilder SVN Integration
E N D
PowerBuilder und SVN Erste Schritte bei der Versionsverwaltung von Softwareprojekten mit Subversion (SVN)
PowerBuilder und SVN • Agenda • Einrichten eines einfachen SVN Servers • Projekt/Verzeichnisstrukturen vorbereiten • Projekt in die Versionsverwaltung aufnehmen • PowerBuilder SVN Integration • Explorer SVN Integration • Zusätzliche Tools • Kleine Fallen und Herausforderungen
Versionsverwaltung - Wie • Wie kann man "Versionieren" • Gar nicht • Per Xcopy / Zip und anderem • PowerBuilder Native • Mit Hilfe eines Tools zur Versionsverwaltung: • Microsoft Visual Source Safe, Concurrent Version System (CVS), Borland StarTeam, Perforce (SCM - Software Configuration Management), IBM Rational ClearCase ... • Subversion (SVN)
Versionsverwaltung - Warum • 'Control' für alle Beteiligten: • Kontrolle über durchgeführte Änderungen • Sicherheit, dass alles sauber 'archiviert' ist • Sicherheit: Wer hat Was Wann (Wo) geändert. • Bei mehr als einem Entwickler bereits sinnvolles Werkzeug zum gemeinsamen Synchronisieren • Zentrale Datenhaltung
Subversion (SVN) • Subversion (SVN) • Existiert seit 2000 • CollabNet, Inc., Brisbane, CA • Open-Source-Software • Versionsverwaltung • für Dateien und Verzeichnisse • Plattformen: • Windows, Mac OS, Linux, Unix, Solaris u.a. Simplify, Collaborate, Innovate Tigris.org Open Source Software Engineering Tools
SVN - Client / Server • Server • Verwaltet ein zentrales Archiv (Repository) • Verfügt über ein einfaches Zugriffs-/ Benutzerkonzept • Client • Zugriff auf das Repository • Verwaltet lokale Arbeitskopien • Kommunikation über TCP/IP - Port 3690 (Standard)
Download über www.trigris.org (z.B. svn-win32-1.5.6.zip) Unzip in ein Verzeichnis, z.B unter c:\program\svn Erzeugen eines Repositories mittels: bin\svnadmin create c:\data\svn_repository Konfigurieren des Repositories Anpassen der Zugriffsrechte in der Datei conf\svnserve.conf Einrichten von Benutzern in der Datei conf\passwd Start des Servers per: bin\svnserve -d -r c:\data\svn_repository Einrichten als Windows Service: sc create svnserver binpath= "c:\program\svn\bin\svnserve.exe --service -r c:\data\svn_repository" displayname= "Subversion" depend= Tcpip start= auto Start/Stop: sc start svnserver / sc stop svnserver SVN - Server Setup
SVN - Client Software • SVN Client • Kommandozeile • Tortoise SVN ['tȯr-təs] • Windows Explorer Integration • PushOK SVN Proxy • Microsoft Source Code Control Interface (MSCCI) Implementierung • Subclipse • Eclipse Integration (Sybase Workspace) • AnkhSVN • Visual Studio Integration per SharpSvn
Tortoise SVN • Explorer Integration • Checkout • Update • Add / Remove • Commit • Lock / Unlock uvm. • Repository Browser • Log Viewer • Revision Graph • Diff- / Merge-Tool • Blame ;-)
Erzeugen einer Projekt Struktur im Repository Projektname trunk tags branches Zwei Möglichkeiten 1. Remote per Tortoise Repo-Browser (sehr einfach) 2. Import einer "Template"-Verzeichnishierarchie per Tortoise (noch einfacher) SVN - Projekt vorbereiten
Vorbereiten PowerBuilder Verzeichnisstruktur (Empfehlungen) Workspace-Datei (pbw) sollte im Root-Verzeichnis des Projekts stehen. Je PBL ein Unterverzeichnis Resource-Files und sonstige Verzeichnisse strukturieren. SVN Checkout Checkout des trunk gegen das Root-Verzeichnis per Tortoise. PowerBuilder - SVN • Projectname • Workspace.pbw • main • main.pbl • target.pbt • Classes • Classes.pbl • Resources • Pic1.gif • App.ico
Tortoise - SVN Checkout 1. Root-Verzeichnis auswählen und "SVN Checkout ..." 2. Als SVN URL den 'trunk' des Projektes angeben 3. Yes! 4. Icon Overlays+.svn Verzeichnis
PowerBuilder - SVN SCC Proxy SVN URL: svn://localhost/pbtutor SVN Module: trunk Achtung: Darstellung des 'trunk' als 'Project' Name.
PowerBuilder - SCC Menus PowerBuilder Integration • Add / Remove • Check In • Check Out • Undo Check Out • Diff • Show History • Refresh Status Plug-In Konfiguration • SVN URL Konfiguration Workspace Properties
PB - Add to Source Control • Target und Objekte per "Add to Source Control" via PowerBuilder hinzufügen. • Neue pbg-Datei !
Andere Dateien und Verzeichnisse via Tortoise hinzufügen (Add + Commit). Tortoise - Add to Source Control • Keine PBLs , pbc , opt oder sonstige unbekannten Dateien versionieren! ! !
Externe Diff / Merge - Tools • Einbinden externer Tools via • PushOK SVN Proxy Properties • Tortoise Settings • Tools • WinMerge (http://winmerge.org/) • PB Delta (http://www.pbdr)
Aufsetzen eines Developer Seats • SVN Checkout per Tortoise SVN • Bootstrapping • Orcascript • PowerGen (www.ecrane.com) • PowerBatch (www.sqlbatch.com) • Workspace + SCC Properties einrichten • Auch eine Workspace-Datei (pbw) kann unter Source Control gelegt werden.
SVN - Herausforderungen I a • Verschieben von Objekten in PowerBuilder • Verschieben aus abc.pbl in def.pbl • Verschieben des Objekts per Drag 'n' Drop im Tortoise Repo-Browser (sofern PBLs in unterschiedlichen Verzeichnissen stehen). • Editieren der abc.pbg und def.pbg und Commit der Änderungen. • Anschließend GetLatest Version auf betroffene PBLs. • Objekt ist nun in def.pbl und befindet sich auch noch in abc.pbl - ist dort jedoch nicht mehr unter Source Control. • Objekt kann nun in abc.pbl gelöscht werden.
SVN - Herausforderungen I b Editieren von PBG-Dateien Achtung! Zeile nicht einfach nur kopieren, sondern auf den Pfad und ggf. PBL Name achten!
SVN - Herausforderungen II • Wenn der Server offline ist ... • PushOK SVN Proxy Properties lassen sich so einstellen, dass auch Offline • Check Out • Undo Check Out möglich sind. • Wenn der Server wieder online ist... • PushOK SVN Proxy Properties umstellen • Check In
SVN - Unser tägliches Brot • Check Out und auch Undo Check Out ;-) • Check In • Ja ... aber wann? • Get Latest Version und Update • Ja... aber wann? • Wann erfolgt ein 'Check In' bzw. 'Commit'? • Size matters! • Größe des Teams • Komplexität der Software (Seiteneffekte) • Anzahl möglicher Varianten • Anzahl gleichzeitig zu betreuender Releases