Git-basierte Workflows und Code Reviews sorgen dafür, dass ein Projekt sauber abläuft.
Ein guter Prozess zur Verwaltung von geschriebenem Code ist die wohl wichtigste Grundlage für effiziente Teams. Nur wer seinen Code und all seine Versionen im Griff hat, kann ein sauberes Deployment durchführen.
Im Internet sind zahlreiche Workflows zur Verwaltung der eigenen Code-Base zu finden. Doch nicht jeder Workflow passt zu jedem Team. Genauso wenig sollte ein Workflow für alle Projekte erzwungen werden. Viel zu unterschiedlich sind die einzelnen Strukturen und Voraussetzungen, die häufig auch der jeweilige Kunde und dessen Infrastruktur mitbringt. Deshalb haben wir uns bei 3m5. darauf verständigt, basierend auf einzelnen Grundsatzentscheidungen, ein eigenes agiles Git-Konzept zu entwickeln. Dabei haben wir uns für eine hybride Lösung entschieden:
Organisiert von einem Git-Master, verfolgen wir in unseren Projekten rollenbasierte Branches, für jedes Zielsystem eines. Dazu gibt es sogenannte "Feature-Branches" für die laufende Entwicklung. Dabei wird jede Erweiterung im Code in einem separaten Strang programmiert und erst nach dessen Freigabe in den Hauptentwicklungszweig migriert. Diese Freigabe erfordert einen umfangreichen Code-Review durch das Entwicklungsteam.
Die zentralen Fragen dabei: Wurden alle Styleguides eingehalten? Ist der Code so strukturiert, dass auch andere Entwickler sofort damit zurechtkommen? Sind offensichtliche Fehler enthalten, die erst noch beseitigt werden müssen? Erst, wenn das alles kontrolliert und Unstimmigkeiten beseitigt wurden, kommt das Feature – abhängig von der Kundenanforderung – zurück in den aktuellen Entwicklungszweig.
Wie aber geht man in so einem Modell mit einem Hotfix für das Live-System um? In einigen Git-Workflows müsste dazu der laufende Entwicklungszweig zurückgesetzt werden. Deshalb haben wir uns an dieser Stelle für eine Abweichung entschieden und spalten für Hotfixes direkt vom Live-Branch ab. Nach erfolgreicher Freigabe (welche ebenfalls ein umfangreiches Code-Review erfordert), verteilt der Git-Master den Hotfix auf alle anderen Systeme. Das Tagging einzelner veröffentlichter Versionen vereinfacht es, später noch mal auf eine bestimmte Version aufzusetzen.