Wir verwenden:
- Entwicklungsbereich ausschließlich
bis das Projekt kurz vor dem Abschluss steht oder wir eine Meilensteinversion erstellen (z.B. Produktdemo, Präsentationsversion), dann verzweigen wir (regelmäßig) von unserem aktuellen Entwicklungszweig in den:
Es werden keine neuen Funktionen in den Release-Zweig aufgenommen. Nur wichtige Fehler werden im Veröffentlichungszweig behoben, und der Code zur Behebung dieser Fehler wird wieder in den Entwicklungszweig integriert.
Der zweiteilige Prozess mit einem Entwicklungs- und einem stabilen (Release-)Zweig macht uns das Leben sehr viel leichter, und ich glaube nicht, dass wir irgendetwas davon durch die Einführung weiterer Zweige verbessern könnten. Jeder Zweig hat auch seinen eigenen Erstellungsprozess, was bedeutet, dass alle paar Minuten ein neuer Erstellungsprozess gestartet wird, so dass wir nach einem Code-Checkin innerhalb von etwa einer halben Stunde eine neue ausführbare Datei mit allen Erstellungsversionen und Zweigen haben.
Gelegentlich haben wir auch Zweigstellen für einen einzelnen Entwickler, der an einer neuen, noch nicht erprobten Technologie arbeitet oder ein Proof of Concept erstellt. Aber im Allgemeinen wird das nur gemacht, wenn die Änderungen viele Teile der Codebasis betreffen. Dies geschieht im Durchschnitt alle 3-4 Monate, und ein solcher Zweig wird normalerweise innerhalb von ein oder zwei Monaten wieder integriert (oder verworfen).
Generell gefällt mir die Idee nicht, dass jeder Entwickler in seinem eigenen Zweig arbeitet, weil man sich dann direkt in die "Integrationshölle" begibt. Davon würde ich dringend abraten. Wenn Sie eine gemeinsame Codebasis haben, sollten Sie alle gemeinsam daran arbeiten. Dadurch werden die Entwickler vorsichtiger, was ihre Checkins angeht, und mit der Erfahrung weiß jeder Entwickler, welche Änderungen möglicherweise den Build zerstören, so dass die Tests in solchen Fällen strenger sind.
Zur Frage des frühen Eincheckens:
Wenn Sie nur PERFEKTER CODE eingecheckt werden soll, dann sollte eigentlich nichts eingecheckt werden. Kein Code ist perfekt, und damit die Qualitätssicherung ihn verifizieren und testen kann, muss er im Entwicklungszweig sein, damit eine neue ausführbare Datei erstellt werden kann.
Für uns bedeutet das, dass eine Funktion, sobald sie fertiggestellt und vom Entwickler getestet ist, eingecheckt wird. Es kann sogar eingecheckt werden, wenn es bekannte (nicht fatale) Fehler gibt, aber in diesem Fall werden die Personen, die von dem Fehler betroffen wären, normalerweise informiert. Unvollständiger und in Arbeit befindlicher Code kann ebenfalls eingecheckt werden, aber nur, wenn er keine offensichtlichen negativen Auswirkungen hat, wie Abstürze oder das Aufbrechen bestehender Funktionen.
Hin und wieder macht ein unvermeidlicher kombinierter Code- und Daten-Checkin das Programm unbrauchbar, bis der neue Code erstellt ist. Das Mindeste, was wir tun, ist, einen "WAIT FOR BUILD"-Vermerk in den Check-in-Kommentar einzufügen und/oder eine E-Mail zu versenden.
0 Stimmen
Ich habe eine ähnliche Frage (oder besser gesagt, eine Frage in der gleichen Richtung) schon einmal beantwortet, also sollten Sie sich diese Frage vielleicht ansehen: Was sind gute Strategien, um die Hotfix-Fähigkeit von bereitgestellten Anwendungen zu ermöglichen?
0 Stimmen
@revo: Moment... meine Antwort von 2008 ist veraltet? :) Ich nehme an, das ist sie in der Tat. Es ist schon mehr als 10 Jahre her: Ich habe meine Antwort bearbeitet.