Wir hatten kürzlich ein Problem, bei dem eine Funktion für unsere Webanwendung (automatische Anmeldung) vom Management verschoben wurde, weil sie den Start für zu "kalt" hielten, aber sie wollten, dass alle anderen Funktionen, an denen wir gearbeitet hatten, live gehen.
Das Problem ist, dass diese Funktionalität zusammen mit all den anderen Funktionen, die wir beim nächsten Release erwarteten, in die Entwicklung integriert wurden, sodass wir nicht einfach dev -> test -> master zusammenführen konnten, wie wir es normalerweise tun.
Wie hätten wir dieses Problem vermeiden können?
project-management
git
gitflow
Steve
quelle
quelle
Antworten:
Ein Ansatz ist das Kennzeichnen von Merkmalen. Es kann sich in der Codebasis befinden, aber durch Konfiguration deaktiviert werden.
Eine weitere Option ist das Ausführen eines Revert-Commits, bei dem die Feature-Zusammenführung rückgängig gemacht wird, sodass sie nicht mehr entwickelt wird. Es kann eine neue Verzweigung erstellt werden, die die Zurücksetzung rückgängig macht und aussteht, um später zusammengeführt zu werden. Wenn Sie Github-Pull-Anforderungen verwenden, können Sie dies problemlos mit der Schaltfläche "Zusammenführen rückgängig machen" für eine zusammengeführte Pull-Anforderung tun.
quelle
Feature Toggling
Doc Brown versteckt werden . Auf diese Weise können wir das Feature (oder dessen Fehlen) auch in nicht produktiven Umgebungen testen. Manchmal werden diese Funktionen zu vorhandenen Funktionen hinzugefügt. In diesem Fall sollten Unit-Tests sowohl für die alten als auch für die neuen Funktionen durchgeführt werden. Bei jedem Komponententest wird nur das Flag auf das gesetzt, was für den aktuellen Test erforderlich ist.Stellen Sie aus Prozesssicht Folgendes fest:
Höchstwahrscheinlich gab es unterwegs Unterbrechungen der Kommunikation. Dies ist wichtig, denn wenn dies nicht funktioniert, basieren Ihre Entwicklungsprozesse auf einem falschen und falschen Verständnis der Geschäftsanforderungen.
quelle
Vergessen Sie für einen Moment das Problem mit Ihrem Management und stellen Sie sich vor, Sie hätten die "automatische Anmeldefunktion" bereits in Ihrer neuesten Produktionsversion, die tief in Ihre Codebasis integriert ist. Jetzt erhalten Sie die neue Anforderung, einen "Aus-Schalter" für "automatische Anmeldung" hinzuzufügen. Wie würden Sie in Ihrem Git-Workflow damit umgehen?
Ich vermute, Sie würden "Deaktivieren der automatischen Anmeldung durch Konfiguration" einfach als zusätzliche Funktion deklarieren (dies ist nur eine Form der Funktionsumschaltung ), sodass sich diese Funktion problemlos in Ihren Workflow integrieren lässt. Sie können den Aufwand abschätzen, wenn Sie einen Feature-Zweig dafür verwenden möchten (oder nicht, wenn Sie für solche Probleme keinen Feature-Zweig verwenden). Und Sie können definitiv den von Ihnen beschriebenen üblichen "merge dev -> test -> master" -Fluss verwenden.
Und genau so können Sie in Ihrer aktuellen Situation damit umgehen. Aus Sicht des Git-Workflows sollte es keine Rolle spielen, ob die Änderungsanforderung vom Management für Release 1.0 stammt oder ob die Änderungsanforderung ein neuer Kundenwunsch für Release 2.0 ist.
quelle
Dies ist genau das Problem, das ich mit Gitflow und GitHub Flow habe, und es scheint, dass dies bei Webanwendungen häufig vorkommt - oder eher der Norm entspricht. Es scheint, als würden Sie dieses Problem entweder rückwirkend (siehe oben) oder proaktiv (siehe unten) lösen.
Ich habe zusätzlich zu den Standard-Gitflow-Zweigen 'Bundle-Zweige' erstellt. Das Bundle enthält alle Funktionen, die für uat / qa bereit sind. Eine Liste der uat / qa-Funktionen wird erstellt. Diese werden zum temporären Bundle zusammengeführt und dieses Bundle wird in uat / qa bereitgestellt. Alle Fehlerkorrekturen finden im ursprünglichen Feature-Zweig statt und werden erneut in das Bundle integriert und bereitgestellt. Dies trennt die kommende Version und ermöglicht es, diese Funktionen gemeinsam zu testen, bevor sie in den Entwicklungszweig gelangen. Die zugelassenen Filialen erhalten eine Pull-Anfrage für die Entwicklung - nach dem Gitflow-Prozess. Testbereite Funktionen können dem temporären Bundle-Zweig hinzugefügt oder daraus entfernt und erneut bereitgestellt werden.
Zu den Nachteilen gehören das Verwalten der Bundle-Liste und das Hinzufügen eines anderen Branch-Typs. Abgesehen von dem Retro-Fix, den ich für zu spät halte, scheint dies die praktikablere Lösung zu sein.
Mit einem GUI-Addon ist es möglicherweise optimal, Feature-Zweige pro Bundle-Bereitstellung zu aktivieren - unter Berücksichtigung der Automatisierung.
quelle