Nous avons récemment rencontré un problème en raison duquel une fonctionnalité de notre application Web (inscription automatique) a été reportée par la direction car elle estimait que le début était trop "froid", mais elle souhaitait que toutes les autres fonctionnalités sur lesquelles nous avions travaillé soient mises en ligne.
Le problème est que cette fonctionnalité avait été intégrée à develop quand elle était finie avec toutes les autres fonctionnalités que nous nous attendions à mettre en production lors de la prochaine version, de sorte que nous ne pourrions pas simplement fusionner dev -> test -> master comme nous le faisons habituellement.
Comment avons-nous pu éviter ce problème?
Réponses:
Une approche consiste à la signaler. Il peut vivre dans la base de code mais être désactivé par configuration.
Une autre option consiste à effectuer une validation qui annule la fusion des fonctionnalités afin qu’elle ne soit plus en développement. Vous pouvez créer une nouvelle branche qui annule le retour et laisser en attente pour une fusion ultérieure. Si vous utilisez des demandes d'extraction Github, vous pouvez le faire facilement avec le bouton "annuler la fusion" d'une demande d'extraction fusionnée.
la source
Feature Toggling
, comme l'appelait Doc Brown. Cela nous permet également de tester la fonctionnalité (ou son absence) dans des environnements non productifs. Parfois, ces fonctionnalités s'ajoutent aux fonctionnalités existantes, auquel cas nous devrions avoir des tests unitaires pour l'ancien et le nouvel ensemble de fonctionnalités. Chaque test unitaire définit simplement le drapeau sur ce dont il a besoin pour effectuer le test en cours.Du point de vue du processus, déterminez:
Plus que probablement il y avait des baisses de communication en cours de route. Ceci est important car, lorsque cela ne fonctionne pas, votre processus de développement sera basé sur une compréhension fausse et erronée des exigences de l'entreprise.
la source
Oubliez un instant le problème de votre gestion et imaginez que vous disposiez déjà de la "fonctionnalité d'inscription automatique" dans votre dernière version de production, profondément intégrée à votre base de code. Vous obtenez maintenant la nouvelle exigence d'ajouter un "interrupteur" pour "inscription automatique". Comment géreriez-vous cela dans votre workflow Git?
Je suppose que vous déclareriez la "désactivation de l'inscription automatique par configuration" simplement comme une fonctionnalité supplémentaire (il ne s'agit que d'une forme de fonctionnalité bascule ), elle devrait donc s'intégrer facilement dans votre flux de travail. Vous pouvez estimer l'effort, si vous le souhaitez, vous pouvez utiliser une branche de fonctionnalité pour celle-ci (ou non, si vous n'utilisez pas de branche de fonctionnalité pour de tels problèmes). Et vous pouvez certainement utiliser le flux usal "merge dev -> test -> master" que vous avez décrit.
Et c'est en fait la façon dont vous pouvez gérer cela dans votre situation actuelle. Du point de vue du workflow git, peu importe si la demande de modification provient de la direction pour la version 1.0 ou si la demande de modification correspond à un nouveau souhait du client pour la version 2.0.
la source
C’est exactement le problème que j’ai avec gitflow et le flux GitHub, et il semble que cela se produise souvent avec les applications Web - ou plutôt comme la norme. Il semble que vous puissiez résoudre ce problème de manière rétroactive (mentionnée ci-dessus) ou de manière proactive (exemple ci-dessous).
J'ai créé des «branches de bundles» en plus des branches standard de gitflow. Le bundle comprend toutes les fonctionnalités prêtes pour uat / qa. Une liste de caractéristiques uat / qa est créée. Celles-ci sont fusionnées dans le paquet temporaire et ce dernier est déployé sur uat / qa. Toute correction de bogue se produit sur la branche de fonctionnalité d'origine et est restituée dans l'ensemble et déployée. Cela sépare la prochaine version et permet de tester ces fonctionnalités ensemble avant qu'elles ne se retrouvent dans la branche develop. Les branches approuvées reçoivent une demande d'extraction en développement - en suivant le processus gitflow. Des fonctionnalités de test peuvent être ajoutées ou supprimées de la branche de l'ensemble temporaire et redéployées.
Inconvénients: gestion de la liste des lots et ajout d’un autre type de branche; Cependant, à part la solution rétro, qui me semble trop tardive, cela semble être la solution la plus viable.
Avec un complément d'interface graphique, il peut être optimal d'activer le déploiement de branches de fonctionnalités par ensemble, en gardant à l'esprit l'automatisation.
la source