Avec git et github réguliers, je peux faire une revue de code en créant simplement une requête pull de la branche de fonctionnalité sur laquelle je travaille vers la branche master. Comment pourrais-je faire des revues de code avec git-flow? Avec un flux de travail comme "la fin de la fonctionnalité de flux git", je ne sais pas où la révision du code se produit réellement et comment git-flow ou git peut faciliter cette révision.
Nous sommes récemment tombés sur ce problème précis. Nous aimons vraiment git flow, car il utilise un bon niveau de sémantique (en utilisant le même niveau que vous utilisez dans la discussion en équipe: "Je vais commencer la fonctionnalité A" plus que "Je vais créer une branche, la vérifier"), tandis que git est un niveau très "d'implémentation" (ce qui est bien et utile aussi, mais différent).
Le problème que nous avons est avec git feature finish
, car il fusionne la branche dans le développement, alors que nous voulons qu'une demande de pull soit envoyée et (c'est important) fusionné par le réviseur, pas le committer, pour mettre l'accent sur la propriété de l'équipe.
Notre solution actuelle:
Ceci est cohérent avec notre pratique, avec l'inconvénient d'exiger de supprimer la branche nous-mêmes (car nous ne git flow finish). Notre prochaine étape sera probablement de réimplémenter certaines parties de git flow (car il s'agit principalement de chaîner les commandes git) pour en tenir compte (avoir la partie "nettoyage" de la finition, sans la fusion).
Le processus utilisé par l'équipe avec laquelle je travaille est le suivant:
git flow feature start module_1
develop
et la branche de fonctionnalité module_1
git flow feature finish module_1
develop
est poussée vers GitHub (GitHub marquera automatiquement la demande de tirage comme fermée/fusionnée lorsque cela se produit)Normalement, tout ce processus est effectué par l'auteur d'origine, mais ce n'est pas obligatoire. Tout membre de notre équipe peut intervenir et reprendre ce processus à tout moment. Tout ce qu'ils ont à faire est de retirer la branche de fonctionnalité et de poursuivre le processus. Qui dirige jamais git flow feature finish module_1
aura le luxe que sa branche de fonctionnalité locale soit supprimée, mais toute autre personne ayant vérifié la branche doit le faire manuellement si elle souhaite utiliser quelque chose comme git branch -D feature/module_1
.
Pour les correctifs, nous utilisons une approche similaire et créons la demande de tirage dans GitHub avant de terminer le correctif.
Voici une autre suggestion.
Si vous effectuez des révisions de code, je suppose que vous disposez d'un référentiel central contenant le code "officiel". Les développeurs tirent et repoussent vers ce référentiel central.
Lorsque vous utilisez Gerrit , Gerrit lui-même devient le référentiel central (il possède des serveurs SSH et HTTP intégrés qui permettent aux utilisateurs d'interagir avec lui de la même manière qu'ils le sont déjà). Lorsque vous utilisez Gerrit, le flux de travail devient:
Lors de l'utilisation d'un référentiel central, les autres développeurs peuvent voir les modifications soumises après l'étape 2. Gerrit introduit le flux de travail de révision du code, et les autres développeurs ne voient donc les modifications soumises qu'après l'étape 5.
Cela fonctionne bien avec git-flow (ou tout autre schéma de branchement) car Gerrit prend en charge l'examen des modifications apportées sur n'importe quelle branche.