Wir gebrauchen:
- Entwicklungszweig ausschließlich
Bis das Projekt kurz vor dem Abschluss steht oder wir eine Meilensteinversion erstellen (z. B. Produktdemo, Präsentationsversion), verzweigen wir (regelmäßig) unseren aktuellen Entwicklungszweig in:
In den Release-Zweig gehen keine neuen Funktionen. Im Release-Zweig werden nur wichtige Fehler behoben, und der Code zum Beheben dieser Fehler wird wieder in den Entwicklungszweig integriert.
Der zweiteilige Prozess mit einer Entwicklung und einem stabilen (Release-) Zweig erleichtert uns das Leben erheblich, und ich glaube nicht, dass wir einen Teil davon verbessern könnten, indem wir mehr Zweige einführen. Jeder Zweig hat auch einen eigenen Erstellungsprozess, dh alle paar Minuten wird ein neuer Erstellungsprozess erstellt. Nach dem Einchecken des Codes haben wir innerhalb einer halben Stunde eine neue ausführbare Datei aller Erstellungsversionen und Zweige.
Gelegentlich haben wir auch Niederlassungen für einen einzelnen Entwickler, der an einer neuen und nicht bewährten Technologie arbeitet oder einen Proof of Concept erstellt. Im Allgemeinen wird dies jedoch nur durchgeführt, wenn die Änderungen viele Teile der Codebasis betreffen. Dies geschieht durchschnittlich alle 3-4 Monate, und ein solcher Zweig wird normalerweise innerhalb von ein oder zwei Monaten wieder integriert (oder verschrottet).
Im Allgemeinen mag ich nicht die Idee, dass jeder Entwickler in seiner eigenen Branche arbeitet, weil Sie "überspringen und direkt zur Integrationshölle gehen". Ich würde dringend davon abraten. Wenn Sie eine gemeinsame Codebasis haben, sollten Sie alle zusammenarbeiten. Dies macht Entwickler bei ihren Checkins vorsichtiger, und mit der Erfahrung weiß jeder Codierer, welche Änderungen den Build möglicherweise beschädigen. Daher sind die Tests in solchen Fällen strenger.
Bei der Check-in-Frühfrage:
Wenn nur PERFEKTER CODE eingecheckt werden muss, sollte eigentlich nichts eingecheckt werden. Kein Code ist perfekt. Damit die Qualitätssicherung ihn überprüfen und testen kann, muss er sich im Entwicklungszweig befinden, damit eine neue ausführbare Datei erstellt werden kann.
Für uns bedeutet dies, dass eine Funktion, sobald sie vom Entwickler abgeschlossen und getestet wurde, eingecheckt ist. Sie kann sogar eingecheckt werden, wenn bekannte (nicht schwerwiegende) Fehler vorliegen. In diesem Fall sind es jedoch die Personen, die von dem Fehler betroffen wären in der Regel informiert. Unvollständiger und in Arbeit befindlicher Code kann ebenfalls eingecheckt werden, jedoch nur, wenn er keine offensichtlichen negativen Auswirkungen wie Abstürze oder Unterbrechungen vorhandener Funktionen verursacht.
Hin und wieder macht ein unvermeidbares kombiniertes Einchecken von Code und Daten das Programm unbrauchbar, bis der neue Code erstellt wurde. Das Mindeste, was wir tun, ist, im Check-in-Kommentar ein "WAIT FOR BUILD" hinzuzufügen und / oder eine E-Mail zu senden.