Frage

Dieser Beitrag hier ( Wie gehen Sie mit Datenbank Revisionen auf einem mittelgroßes Projekt mit Niederlassungen? ) bekamen frage ich, wie am besten auf einem Web-Projekt Verzweigung mit zu arbeiten und dev bereitstellen, Inszenierung und Produktion (zusammen mit lokalen Kopien).

Wir haben keine „Releases“ per se: Wenn ein Merkmal ist groß genug, um zu erkennen, schieben wir es (nach erforderlichen Tests / etc.) Leben, sonst Batch wir ein paar und, wenn es sich anfühlt „komfortabel “, drücken Sie die Live. Ziel ist es, nie eine deploy mehr als einmal oder zweimal im Monat oder so, weil ein sich ständig verändernden Ort, um die Benutzer etwas unruhig zu machen tendiert.

Hier ist, wie wir es tun, und es fühlt sich irgendwie spröde (derzeit svn aber einen Schalter zu git bedenkt):

  1. Zwei „Zweige“ - DEV und STAGE mit einer bestimmten Version von STAGE als STAMM markiert
    • prüft Entwickler eine Kopie von STAMM für jede Änderung und erzeugt einen Zweig für sie
    • Entwickler arbeiten lokal, häufig in Code-Kontrolle (wie Voting: früh und häufig)
    • Wenn Entwickler komfortabel ist es nicht völlig gebrochen ist, den Zweig mit DEV verschmelzen und zur Entwicklung Standort bereitstellen.
    • Wiederholen Sie 3-4 wie nötig, bis die Änderung „fertig“
    • Merge ändern Zweig mit STAGING, auf Stufe Standort bereitstellen. Haben erwartet Endprüfung.
    • Nach einiger Zeit eine gegebene Revision der STAGE als STAMM markieren, und drücken Sie Stamm leben
    • Merge STAMM wieder auf DEV ändert sie synchron zu halten

Nun haben einige dieser Schritte erhebliche Komplexität von Hand gewischt und in der Praxis sehr schwer zu tun (STAMM -> DEV bricht immer) so muss ich vorstellen, dass es einen besseren Weg

.

Die Gedanken?

War es hilfreich?

Lösung

Branching ist praktisch, wenn Sie die Arbeit nicht rechtzeitig abgeschlossen werden, erwarten, und Sie nicht über einen ausreichenden Körper von Tests müssen die kontinuierliche Integration Arbeit zu machen. Ich neige dazu, branchen verrückt Entwicklung in den Geschäften zu sehen, wo die Programmieraufgaben viel zu groß sind vorhersagbar zu vervollständigen und so Management bis kurz vor einem Release warten will, um zu bestimmen, was sollte kennzeichnet versenden. Wenn Sie diese Art von Arbeit tun, dann könnten Sie mit verteilten Versionskontrolle prüfen, wo jedes Arbeitsverzeichnis ein Zweig natürlich ist und Sie bekommen alle lokalen Check-in und die lokale Geschichte Sie ohne jemandem weh zu tun essen kann. Sie können sogar Quer verschmelzen mit anderen Entwicklern außerhalb des Rumpfes.

Meine Präferenz ist, wenn wir in einem instabilen Stamm mit Zweigen für Release-Kandidaten arbeiten, die dann für die Freigabe markiert sind, und die dann der Strom werden für den Notfall-Patches. In einem solchen System haben Sie sehr selten mehr als drei Zweige (letzte Veröffentlichung, aktuelle Release Candidate, instabile Stamm). Dies funktioniert, wenn Sie TDD tun und haben CI auf dem instabilen Stamm. Und wenn Sie alle Aufgaben erfordern abgebaut werden, so können Sie Code liefern, so oft wie gewünscht ein (in der Regel sollte eine Aufgabe nur ein bis zwei Tage, und lösbar, ohne alle anderen Aufgaben, die seiner Funktion zusammensetzen). So Programmierer Arbeit nehmen, Check-out den Kofferraum, um die Arbeit tun, synchronisieren und Check-in jederzeit alle Tests bestanden. Der instabile Stamm ist immer verfügbar als Release Candidate verzweigen (wenn alle Tests bestanden) und damit freisetzen wird ein Nicht-Ereignis.

Insgesamt bessere Mittel. Weniger Verzweigungen, kürzere Aufgaben, kürzere Zeit zu lösen, mehr Tests

Andere Tipps

Ein offensichtlicher Gedanke wäre „re“ (verschmilzt wieder häufiger von „Eltern“ Umwelt STAGE „Kind“ Umwelt „DEV“ an Entwickler-Zweig), um die endgültigen Auswirkungen von TRUNK-> DEV zu minimieren, was würde wird nicht mehr benötigt.

Das heißt, alles in STAGE getan, dass zu einem Zeitpunkt in der Produktion gehen (STAMM) so früh wie möglich in DEV und privatem Devs Zweig, sonst jene späte Nachrüstung verschmilzt immer ein Schmerz ist gebunden ist fusionierte zurück werden soll.

ABER, es ist die oben merge Workflow ist zu unbequem, würde ich einen REBASE Zweig vorschlagen, basierend auf neueste DEV nur nach einer Freigabe (neu STAMM). Das Fütterungsmaterial TRUNK-> DEV würde TRUNK-> REBASE, wo alle Probleme gelöst sind, dann wird eine endgültige merge DEV> REBASE zu überprüfen, ob alle aktuellen Entwickler mit dem neuen aktualisierten System kompatibel sind. Eine abschließende triviale merge zurück von REBASE nach DEV (und an privaten dev Verzweigungen) würde den Vorgang abzuschließen.
Der Punkt eines Zweiges ist eine Entwicklungsaufwand zu isolieren, die nicht zusammen mit anderen aktuellen Entwicklungsanstrengungen durchgeführt werden kann. Wenn TRUNK-> DEV zu kompliziert ist mit Strom DEVs zu mitgehen, müssen sie isoliert werden. Daraus ergibt sich die 'REBASE' Zweig Satz.

Wir verwenden SVN im Shop ich bei der Arbeit. Während wir C ++ Entwicklung zu tun, ist die Versionsverwaltung ziemlich universell. Im Folgenden ist unser Ansatz, können Sie entscheiden, was, wenn irgendetwas davon, für Ihren Ansatz sinnvoll ist.

Für uns kommt es ALL Entwicklung in einem Zweig. Wir zweigen für jeden Fehler und jede Funktion. Idealerweise wird dieser Zweig NUR 1 Feature gewidmet aber manchmal, dass nur gemeint ist, nicht zu sein.

Wenn die Arbeit abgeschlossen ist, getestet und „ready“ wir die Veränderungen in den Kofferraum zu verschmelzen. Unsere Regel ist darin zu keinem Zeitpunkt soll, dass der Stamm jemals Code gebrochen hat. Wenn gebrochen Code seinen Weg in den Kofferraum finden soll, Fixieren wird es Priorität 1.

Veröffentlichungen gemacht werden, wenn die Funktionen all fertig sind und verschmolzen: ein Zweig für die Freigabe erstellt wird, als ein Tag ist. Der Tag erlaubt uns, eine shapshot abrufen, wenn wir brauchen. Die Filiale ermöglicht es uns, unsere vorherige Version zu unterstützen. Beheben von Fehlern in einer freigegebenen Version erfolgt durch auf, dass die Freisetzung der Filiale gehen, Verzweigung von ihm. Wenn alles gut geht, werden Änderungen an der Veröffentlichung des Zweig verschmolzen zurück und, falls gewünscht, den ganzen Weg zum Kofferraum.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top