-
-
Notifications
You must be signed in to change notification settings - Fork 7
Home
Ralf Stockmann edited this page Nov 30, 2019
·
9 revisions
Wir folgen den Regeln von GitHub flow (nicht: gitflow). Die sind hier gut erklärt:
Daraus ergibt sich:
- Der
master
branch ist heilig. In ihm darf nur produktiver, getesteter und reviewed Code befinden. Ohne zu zögern geben wir ihn raus, um damit Sendungen zu produzieren. - Sämtliche Erweiterungen, Bugfixes und sonstige Umbauten finden niemals im
master
statt, sondern immer in einem sinnvoll benanntenfeature-branch
. Inmaster
wird also - bis auf in wenigen Ausnahmefällen - nicht commited. - Bevor ein
feature-branch
angelegt wird, muss im Projektbereich https://github.com/Ultraschall/ultraschall-portable/projects/1 ein Issue dafür angelegt werden, dass das grundsätzliche Ziel menschenlesbar beschreibt. Dieses Issue liegt zunächst in der Spalte "Offen / Ideen" und wird dort diskutiert. - An jedem Issue wird ein Tag angehängt nach dem Muster #Issuenummer, also etwa:
#42
- dieses Tag wird dann auch an den korrespondierendenPull Request
gehängt sowie an eventuelle andere Elemente die Tags zu diesem Issue tragen können. - Möchte man ein Feature angehen, so setzt man zunächst "Assignee" des Issues auf den eigenen Namen. Dann legt man einen
feature branch
an mit einem hinreichend ähnlichen Namen wie das Issue. Jederfeature branch
wird vommaster
abgeleitet. - Hat man einen
feature-branch
angelegt (und erst dann!), so verschiebt man die Issue-Karte auf den Status "In Arbeit". Es gibt also keinen Branch ohne entsprechende Karte im Projektboard auf dem Status "In Arbeit", und keine Karte in dieser Spalte ohne Branch. - In der Beschreibung des
feature-branch
setzen wir einen Verweis auf #issue, Ebenso an den Beginn des Titels des Issues, etwa#42 Name des Issue
- Wir commiten unsere Änderungen in unserem
feature-branch
so oft wie sinnvoll, mindestens aber nach jeder Arbeitssession. Einfeature-branch
kann jederzeit kaputten oder unproduktiven Code enthalten. Massen-commits über viele Dateien sind zu vermeiden, im Zweifel lieber jede Datei einzeln commiten mit aussagekräftiger Beschreibung. - Wir nutzen das
Pull Request
Feature von GitHub um die Funkionen in einemfeature-branch
von anderen testen zu lassen. Die dann hier entstehende Kommunikation ersetzt die bisherige im RocketChat. Die Diskussion erfolgt nie am PR, sondern immer am ursprünglichen Issue. Der Name des PR entspricht im Wesentlichen dem des Issue, zusätzlich beginnt er mit dem Tag-Namen, also etwa:#42 Name des Issue
- Wenn der
Pull Request
für ein Issue erfolgt ist, so schieben wir die entsprechende Projektkarte eine Spalte weiter aufTest und Review
- Der finale
merge request
in denmaster
wird nie vom Entwickler selbst, sondern immer von einem anderen Mitglied nach finalem Test/Codereview vorgenommen. Hier wird auch auf ausreichende Dokumentation etc. geachtet. Nach erfolgreichemmerge
wird derfeature-branch
gelöscht - die ganze Historie bleibt ja im Git erhalten. - Issues, die sich durch Änderungen in den Settings von REAPER lösen lassen (Änderungen in den .ini Dateien) werden immer mit einem Screenshot illustriert, der das entsprechende Settings-Fenster zeigt.
- Ist ein neues Feature in den
master
gemerged worden, so wird direkt hier im Wiki das Changelog erweitert: https://github.com/Ultraschall/ultraschall-portable/wiki/Ultraschall-Changelog - die GIFs dazu produziert @rstockm
- Die Anzahl aller Karten in der Spalte
Test und Review
ist gleich Anzahl derPull Requests
- Die Summe aller Karten in den Spalten
In Arbeit
undTest und Review
ist gleich der Anzahl allerfeature branches
-1 (dem Master) - Die Anzahl aller Karten in der Spalte
Done
ist gleich der Anzahl der Einträge imChangelog
https://github.com/Ultraschall/ultraschall-portable/wiki/Ultraschall-Changelog
Es bietet sich hier die eigene App von GitHub an, zumindest was das Clonen, commiten und Auschecken von Branches angeht:
- https://desktop.github.com Die reicht jetzt eigentlich für unsere Zwecke.
Hier gibt es mein YouTube Video in dem ich - mit einigen Schleifen - den Workflow konkret am Objekt durchgehe: