Seite 1 / 25
Versionskontrolle Seite 2 / 25
Verteilte Versionskontrollsysteme Seite 3 / 25
Seite 4 / 25
Zusammenfassung Versionskontrolle Wir verwenden bei der Entwicklung das dezentralisierte Versionskontrollsystem Git. Eine Versionsverwaltung dient zur Erfassung von Änderungen an Dokumenten oder Dateien verwendet wird. Alle Versionen werden in einem Archiv mit Zeitstempel und Benutzerkennung gesichert und können später wiederhergestellt werden. Verteilte Versionskontrollsysteme Dezentralisierte oder verteilte Versionskontrollsysteme haben gegenüber zentralisierten Systemen (CVS, Subversion) den Vorteil, dass sie unabhängig sind von einem Ausfall der zentralen Stelle, welche die Historie der Codeentwicklung verwaltet. Git Git wird bei namhaften Open Source Projekten eingesetzt, wie zum Beispiel Linux, Drupal und TYPO3. oder Softwareverteilung nennt man Prozesse zur Installation von Software auf Anwender-PCs oder Servern. Ziel ist die automatische Installation, Konfiguration und Wartung mit geringem Aufwand. Unser system ist dreistufig aufgebaut: Seite 5 / 25
WEB SERVER Seite 6 / 25
VER SERVER GIT SER SERVER SERVER SERVER bare SERVER repository SER SERVER SER- SERVER Development SER SERVER Release SER Master WEB SERVER Seite 7 / 25
VER SERVER GIT SER SERVER SERVER SERVER bare SERVER repository SER SERVER SER- SERVER Development SER SERVER Release SER Master WEB SERVER Lokal Seite 8 / 25
VER SERVER GIT SERVER SERVER bare repository SERVER SER- SERVER 1 Development SERVER SER- 2 Release 3 Master SERVER VER SERVER GIT SER SERVER SERVER SERVER bare SERVER repository SER SERVER SER- SERVER Development SER SERVER Release SER Master WEB SERVER Lokal Seite 9 / 25
Entwickler PC Entwickler PC VER SERVER GIT SERVER SERVER bare repository SERVER SER- SERVER 1 Development SERVER SER- 2 Release 3 Master SERVER VER SERVER GIT SER SERVER SERVER SERVER bare SERVER repository SER SERVER SER- SERVER Development SER SERVER Release SER Master WEB SERVER Entwickler PC Lokal Seite 10 / 25
Entwickler PC Entwickler PC Manuelles Auslösen: COMMIT, PUSH VER SERVER GIT SERVER SERVER bare repository SERVER SER- SERVER 1 Development SERVER SER- 2 Release 3 Master SERVER VER SERVER GIT SER SERVER SERVER SERVER bare SERVER repository SER SERVER SER- SERVER Development SER SERVER Release SER Master WEB SERVER Entwickler PC Lokal Seite 11 / 25
Entwickler PC Entwickler PC Manuelles Auslösen: COMMIT, PUSH VER SERVER GIT SERVER SERVER bare repository SERVER SER- SERVER 1 Development SERVER SER- 2 Release 3 Master SERVER Post-receive Hook VER SERVER GIT SER SERVER SERVER SERVER bare SERVER repository SER SERVER SER- SERVER Development SER SERVER Release SER Master WEB SERVER Entwickler PC Lokal Seite 12 / 25
Entwickler PC Entwickler PC Manuelles Auslösen: COMMIT, PUSH VER SERVER GIT SERVER SERVER bare repository SERVER SER- SERVER 1 Development SERVER SER- 2 Release 3 Master SERVER Post-receive Hook Post-receive SER Hook SER SER- VER SERVER GIT SERVER SERVER subdomains: SER SERVER bare SERVER repository SER SERVER SER- SERVER development.example.com SER SERVER Development SER SERVER SERVER SERrelease.example.com SERVER Release SER Master WEB SERVER Entwickler PC Lokal Seite 13 / 25
Entwickler PC Entwickler PC Manuelles Auslösen: COMMIT, PUSH VER SERVER GIT SERVER SERVER bare repository SERVER SER- SERVER 1 Development SERVER SER- 2 Release 3 Master SERVER Post-receive Hook Post-receive SER Hook SER SER- VER SERVER GIT SERVER SERVER subdomains: SER SERVER bare SERVER repository SER SERVER SER- SERVER development.example.com SER SERVER Development SER SERVER SERVER SERrelease.example.com SERVER Release SER SERVER Master: SER Master SER SERVER example.com WEB SERVER Entwickler PC DANGER! Lokal Seite 14 / 25
Drei-Ordner-system Lecherbauer sches Karussell Seite 15 / 25
Drei-Ordner-system prod prev next Seite 16 / 25
Drei-Ordner-system Unser Drei-Ordner-system bietet folgende Vorteile: 1. Zeitersparnis beim 2. Konsistenz 3. Continuous Integration (ohne Unterbruch des Anwendungsbetriebs) Letzteres wird durch eine Aufteilung der Branches in drei Unterordner erreicht. Der Ordner next wird erstellt und per Git mit der neusten Version befüllt. Der aktuelle Stand wird in den Ordner prev verschoben und der ordner next in prod umbenannt. Somit haben wir sehr kurze Umschaltzeiten; auch im Falle eines Reverts auf die letzte Version. Seite 17 / 25
Drei-Ordner-system Ausgangszustand prod (aktuelle Version) prev (vorhergehende Version) Seite 18 / 25
Drei-Ordner-system Ausgangszustand 1. next wird beim deployen neu erstellt. Der jeweilige Branch wird darin ausgecheckt. prod prod (aktuelle Version) prev prev next (vorhergehende Version) (neue Version) Check-out der Branches aus dem bare repository Development Release Master Seite 19 / 25
Drei-Ordner-system 2. prev wird gelöscht prod prev X next Seite 20 / 25
Drei-Ordner-system 2. prev wird gelöscht 3. prod wird in prev umbenannt prod prod prev X next prev next Seite 21 / 25
Drei-Ordner-system 4. next wird in prod umbenannt prod prev next Seite 22 / 25
Drei-Ordner-system 4. next wird in prod umbenannt Endzustand prod prod (aktuelle Version) prev next prev (vorhergehende Version) Seite 23 / 25
Vielen Dank für Ihre Aufmerksamkeit Seite 24 / 25
Bildquellen http://www.flickr.com/photos/63246437@n00/231271035 http://www.flickr.com/photos/23651004@n06/9058945095 http://www.flickr.com/photos/pewag66/8221901360 http://www.flickr.com/photos/reinvented/5586120369 http://www.flickr.com/photos/26546578@n06/4193814990 http://www.flickr.com/photos/79200003@n05 Seite 25 / 25