Git-Konfigurationsmanagement richtig machen
(insight.infograb.net)-
Eine einheitliche Branch-Strategie festlegen
- Wenn Teammitglieder mit Wissen aus verschiedenen Fachbereichen zusammenarbeiten, können Ansätze für den Workflow kollidieren
- Um das zu verhindern, sollte die Leitung eine einheitliche Branch-Strategie festlegen und sie an alle kommunizieren
- Welche Branch-Workflows geeignet sind, hängt von verschiedenen Faktoren ab, etwa Teamgröße, Erfahrungsniveau, Skalierungsanforderungen und Arbeitsbeschränkungen
- Das Entwicklungsteam kann einem bereits festgelegten Workflow folgen, aber auch einen Workflow passend zu den Teamanforderungen erstellen
- Inhalte, die ein Workflow umfassen kann
- Zentralisierter Workflow: Es gibt ein Repository und einen Master-Branch. Dabei besteht das Risiko, Änderungen zu überschreiben
- Feature-Branch: Jedes Mal, wenn eine neue Funktion hinzugefügt wird, wird ein neuer Branch erstellt. Funktionsbezogene Commits kommen in diesen Feature-Branch
- Git Flow: eine extreme Form des Feature-Branching. Bei der Entwicklung mit Git Flow gibt es neben dem Master einen separaten Entwicklungs-Branch. Unterstützt werden Feature-, Release- und Hotfix-Branches. Entwickelt wird im Entwicklungs-Branch, dann in den Release-Branch verschoben und anschließend in den Master-Branch gemergt
- Task-Branch-Entwicklung: GitLab Flow ist ein Beispiel für diese Art der Entwicklung. Es verbindet funktionsorientierte Entwicklung mit Issue-Tracking über Feature-Branches. GitLab Flow verwaltet mit separaten dedizierten Branches mehrere Umgebungen wie Staging, Produktionstests und Produktion. So wird sichergestellt, dass eingecheckte Änderungen über alle Umgebungen hinweg getestet werden
- Auswirkungen auf die Zusammenarbeit:
- Wenn alle in einem gemeinsamen Workflow harmonieren, sinkt die Wahrscheinlichkeit, Code zu überschreiben oder den Master-Branch zu beschädigen
- Alle Beteiligten werden mit Entwicklungs- und Deployment-Prozessen vertraut, sodass Teammitglieder leichter zur Arbeit anderer beitragen können
- Eine klare und prägnante Branch-Strategie führt zu einem positiven Kreislauf aus neuem Code-Merge und Weiterentwicklung des Projekts
- Dieses Umfeld hilft Teammitgliedern dabei, Meetings zu organisieren sowie Deadlines und Arbeitslast zu steuern
- Auswirkungen der einzelnen Workflows auf die Zusammenarbeit
- Zentralisierter Workflow: effektiv für kleine Teams (weniger als 5 Entwickler), die gut kommunizieren können, damit nicht zwei Entwickler gleichzeitig doppelt am selben Code arbeiten
- Feature-Branch und Git Flow: verbinden größere Teams, da mehr Code Reviews, Push-Regeln, Code-Owner und umfassendere Tests erforderlich sind
- Task-Branch-Entwicklung: hilft Teammitgliedern, Anforderungen in kleine Funktionspakete zu zerlegen, die in Task-Branches überführt werden. Dieser Workflow umfasst kollaborative Praktiken wie Code-Snippets, Code Reviews und Unit-Tests. Wenn Tests fehlschlagen, arbeitet das Team gemeinsam daran herauszufinden, was schiefgelaufen ist
-
In kleinen Einheiten häufig committen
- Wenn Vollständigkeit priorisiert wird, kann es passieren, dass erst bei fast fertiggestelltem Projekt ein großer Commit erfolgt
- Wenn einfache Funktionsvalidierung und kleine Zwischenschritte übersprungen werden, kann es zu Fehlentwicklungen kommen oder Zeit in die falsche Richtung investiert werden
- Jedes Mal committen, wenn funktionierende Tests und lauffähiger Code vorhanden sind
- Das Projekt sollte in kleine Schritte vereinfacht werden, und durch häufige Commits muss ein Weg gefunden werden, große Ziele zu erreichen
- Auswirkungen auf die Zusammenarbeit:
- Wenn sich eine Kultur häufiger Commits etabliert, erhält jeder mehr Transparenz im Code-Repository und kann leicht sehen, woran andere arbeiten
- Wenn Arbeitsergebnisse in Feature-Branches oder Merge Requests geteilt werden, lassen sich doppelte Arbeiten anderer Teammitglieder vermeiden
- Auch wenn etwas noch nicht bereit für ein Review ist, sollte es häufig in den Feature-Branch gepusht werden
- Wenn Arbeit vor dem Abschluss geteilt wird, werden Diskussion und Feedback aktiviert, sodass sich die Qualität schon vor dem Code Review verbessern kann
- Wenn Arbeit in mehrere Commits aufgeteilt wird, liefert das bei späteren Codeprüfungen nützliche Informationen für Entwickler und andere Teams
- Es lässt sich pro Commit klar nachvollziehen, wie eine Funktion entwickelt wurde
- Nicht zusammenhängende Änderungsverläufe bleiben erhalten, Rollbacks auf gewünschte Zeitpunkte werden möglich, und bestimmte Codeänderungen lassen sich gezielt rückgängig machen
-
Detaillierte Commit-Messages schreiben
- Eine Commit-Message sollte nicht nur den Inhalt des Commits, sondern auch die Absicht des Entwicklers widerspiegeln
- Mit der Commit-Message sollte erklärt werden, warum die Änderung vorgenommen wurde
- Beispiel für eine gute Commit-Message: „Templates zusammengeführt, um doppelten Code in der Benutzeroberfläche zu reduzieren“
- Wörter wie „Änderung“, „Verbesserung“, „Fix“, „Refactoring“ in Commit-Messages sind für sich genommen keine nützlichen Informationen
- Auswirkungen auf die Zusammenarbeit:
- Detaillierte Commit-Messages erhöhen die Transparenz und schaffen Sichtbarkeit über den Fortschritt, sodass Teammitglieder, Kunden und künftige Beitragende den Entwicklungsprozess besser verstehen
- Bei Code Reviews helfen Commit-Messages dabei, wiederkehrte Abläufe nachzuvollziehen und Änderungen nach Releases, Abstimmungen oder geänderten Anforderungen zu erkennen
- Ausführliche Commit-Messages helfen QA- und Security-Teams bei Codeprüfungen, Problembereiche zu identifizieren und bestimmte Änderungen rückgängig zu machen
- Wenn Commit-Messages ausführlich geschrieben werden, verhindert das doppelte Arbeit anderer Teammitglieder, minimiert Verzögerungen und unterstützt einen stabilen Projektfortschritt
-
Mit Branches entwickeln
- Entwicklung auf einem Branch bedeutet im Grunde, den aktuellen Zustand auf diesem Branch zu kopieren und darauf zu arbeiten
- Mit Branches können Codeänderungen vorgenommen werden, ohne die Haupt-Codebasis zu beeinflussen
- Die Änderungshistorie wird innerhalb des Branches verwaltet
- Wenn der Code bereit ist, kann er in den Master-Branch gemergt werden
- Entwicklung auf Branches ermöglicht einen strukturierteren Ansatz beim Entwickeln
- Entwürfe in Entwicklung können getrennt vom stabil getesteten Master-Code separat verwaltet werden
- Auswirkungen auf die Zusammenarbeit:
- Teammitglieder können innovative Lösungsansätze und Experimente für komplexe Probleme ausprobieren
- Das Entwicklungsteam kann kreative Herausforderungen angehen, ohne ständig Sorge zu haben, den Master-Branch zu beeinträchtigen
- Vor dem Merge in den Master-Branch kann gemeinsam überprüft werden, ob die Lösung korrekt funktioniert
- Betriebs-, QA- und Security-Teams können den Code vor dem Deployment prüfen, und alle Beteiligten erhalten vor dem Release die Möglichkeit, Ideen einzubringen und potenzielle Probleme zu diskutieren
-
Regelmäßige Code Reviews durchführen
- Sichert kontinuierliche Verbesserung und verhindert instabilen Code
- Sobald es zu prüfenden Code gibt, sollte ein Kollege, Teammitglied oder Fachexperte, der das Projekt gut kennt, um ein Code Review gebeten werden
- Worauf bei Code Reviews zu achten ist:
- Erklären, welche Änderungen notwendig sind
- Alternativen anbieten, dabei aber davon ausgehen, dass der Entwickler diese bereits bedacht hat
- Auch im Lösungsprozess sollte nach Wegen gesucht werden, den Code zu vereinfachen
- Auswirkungen auf die Zusammenarbeit:
- Code Reviews bringen andere Sichtweisen auf Problemlösung und Implementierung ein
- Sie sind ein zusätzlicher Blick, um Bugs, Logikfehler oder potenzielle Edge Cases zu finden
- Sie helfen, Probleme abzufedern, die auftreten können, wenn man sich durch schwierige Themen zur Veröffentlichung vorarbeitet
- Lösungen können überprüft, Meinungen eingebracht und Reviews in Zusammenarbeit mit Teammitgliedern durchgeführt werden
- Man kann verschiedene Coding-Methoden, Workflow-Know-how und neue Arten der Problemlösung lernen
Noch keine Kommentare.