2017-04-04 1 views
2

Notre flux de travail précédent était similaire à gitflow, tout est masterisé, le master reflète toujours la production. Lorsqu'une version est en cours de préparation, les branches de fonctionnalité sont fusionnées en master, les conflits possibles entre les différentes caractéristiques sont corrigés, créer une étiquette pour la version, pousser pour maîtriser et c'est tout.Flux de travail pour la gestion des demandes d'extraction dans un workflow gitflow (avec des versions peu fréquentes)?

Alors maintenant, nous aimerions intégrer les demandes d'attraction dans ce flux de travail, mais laisser le développeur de la branche restent responsables des conflits de fixation. L'idée était alors de toujours déconnecter le maître, puis de faire une requête de traction vers une nouvelle branche, appelée releaseX, où tout le nouveau code qui va entrer dans la prochaine version est.

Le problème est que quand il y a des conflits dans releaseX entre la nouvelle fonctionnalité et les autres caractéristiques, comment le développeur les corriger? Faire la fusion dans github lui-même n'est pas acceptable, fusionner releaseX dans la branche feature n'est pas non plus (cela tirerait des fonctionnalités non liées et rendrait plus difficile la mise en production d'une fonctionnalité).

Ce que nous avons fini avec la création d'une branche était juste pour la fusion, quelque chose comme la résolution/releaseX_my_beautiful_feature.

(Pour l'instant, après plus d'un githubflow comme modèle (au lieu de gitflow), avec le déploiement continu et aucun concept réel de presse, est pas la meilleure solution pour nous.)

Quel flux de travail les gars ne vous adoptez lors de l'utilisation à la fois des demandes d'extraction et des versions?

+0

L'idée de base de git-flow pour les correctifs de version est en fait une branche de correctif séparé dans laquelle vous corrigez certains bogues et créez une nouvelle version après les avoir corrigés. Donc, pour moi, il semble que vous ne faites pas cela et c'est pourquoi vous avez ces problèmes conceptuels. Corrigez-moi s'il vous plaît si j'ai tort. – ckruczek

+0

Nous avons une branche de publication, c'est là que sont fusionnées les fonctionnalités et les correctifs qui vont dans la nouvelle version. Le problème est que lorsqu'il y a des conflits et nous utilisons des requêtes pull, la seule façon pour le développeur de résoudre ces conflits sans fusionner la branche feature dans la branche release, c'est-à-direoù il contournerait la fonction de demande de traction, et sans fusionner la branche de publication dans la branche de fonctionnalité, le développeur doit créer une branche spécifique à partir de la branche de fonctionnalité, fusionner dans la branche de publication et résoudre les conflits. – Sofia

+1

Dans [Atlassian] (https://www.atlassian.com/git/tutorials/making-a-pull-request), ils fournissent une description intéressante de la façon dont un flux de travail de requête pull peut être géré avec un workflow gitflow. S'il vous plaît jeter un coup d'oeil et laissez-nous savoir si vous le trouvez utile ou non. – ckruczek

Répondre

2

Comme @ckrusek dit Atlasssian a un beau document sur les différents types de flux de travail. En ce qui concerne un gitflow + tirer les demandes de flux de travail ce qu'ils recommandent est:

  • propose bifurquent développer
  • caractéristiques font un pull-demande pour développer
  • presse branche (branche off développent convention de dénomination: communiqué- * ou la libération/*). La branche de publication sert uniquement à préparer la version, toute fonctionnalité qui n'est pas déjà développée est reportée au prochain cycle de publication.
  • branche de sortie de fusion en maître et développer
  • entretien
  • /branches chaudes-Fixes bifurquent maître
  • entretien/hot-fixes branches fusionnent en maître et développer

Bien sûr, il n'y a encore aucun moyen de ne pas mélanger des fonctionnalités non liées dans développer dans notre branche de fonctionnalité.

Fondamentalement, un flux de demandes de tirage implique les versions plus fréquentes et de gérer ces nous devons avoir des drapeaux de fonction afin de désactiver les fonctionnalités pas tout à fait soi-testé dans la production si nécessaire. Ce que ce modèle nous apporte, c'est un workflow qui incorpore le concept de versions et un moyen de les gérer.