web-dev-qa-db-fra.com

Quels sont les avantages et les inconvénients de git-flow par rapport à github-flow?

Nous avons récemment commencé à utiliser GitLab.

Utilise actuellement un flux de travail "centralisé".

Nous envisageons de passer au github-flow mais je veux en être sûr.

Quels sont les avantages et les inconvénients de git-flow vs github-flow ?

111
Paul McKenzie

Comme indiqué dans l'épisode 17 de GitMinutes, par Nicholas Zakas dans son article intitulé " flux de travaux GitHub au sein d'une entreprise ":

Git-flow est un processus de gestion des modifications dans Git créé par Vincent Driessen et accompagné de extensions Git permettant de gérer ce flux.
L’idée générale derrière git-flow est d’avoir plusieurs branches distinctes, chacune dans un but différent: master, develop, feature, release et hotfix.
Le processus de développement de fonctionnalités ou de bogues se passe d’une branche à l’autre avant sa publication définitive.

Certains répondants ont indiqué qu'ils utilisaient git-flow En général.
Certains ont commencé avec git-flow Et s'en sont éloignés.

La principale raison de ce déplacement est que le processus git-flow Est difficile à gérer dans un modèle de déploiement continu (ou quasi continu).
Le sentiment général est que git-flow Fonctionne bien pour les produits d'un modèle de version plus traditionnel, dans lequel les versions sont effectuées toutes les quelques semaines, mais ce processus est interrompu. baisser considérablement lorsque vous publiez une fois par jour ou plus .

En bref:

Commencez avec un modèle aussi simple que possible (comme le flux de GitHub a tendance à l'être), et optez pour un modèle plus complexe si vous en avez besoin.


Vous pouvez voir une illustration intéressante d'un flux de travail simple , basé sur GitHub-Flow à:
"n simple modèle de branchement git", les éléments principaux étant:

  1. master doit toujours être déployable.
  2. toutes les modifications apportées par le biais des branches de fonctionnalités (pull-request + fusion)
  3. se rebaser pour éviter/résoudre les conflits; fusionner dans master

https://a248.e.akamai.net/camo.github.com/9783623eba280ba5ace8b9e63842be52af2f0546/687474703a2f2f7374617469632e62656e65742e61692f736b697463682f666c6f772d32303133303932362d3139333431392e706e67

116
VonC

Tout le monde ne devrait suivre aucun flux de travail, car tous les modèles sont sous-optimaux. Cela dit, vous pouvez sélectionner le modèle adapté à votre logiciel en fonction des points ci-dessous.

Plusieurs versions en production - utilisez Git-flow

Si votre code contient plusieurs versions en production (c'est-à-dire des logiciels types tels que systèmes d'exploitation, packages Office, applications personnalisées, etc.), vous pouvez utiliser git-flow. La raison principale en est que vous devez prendre en charge de manière continue les versions précédentes en production lors du développement de la version suivante.

Version simple dans un logiciel simple de production - utilisez Github-flow

Si votre code n’a à tout moment qu’une version en production (sites Web, services Web, etc.), vous pouvez utiliser github-flow. La raison principale est que vous n'avez pas besoin de choses complexes pour le développeur. Une fois que le développeur a terminé une fonctionnalité ou un correctif, il est immédiatement promu en version de production.

Version unique en production mais logiciel très complexe - utilisez Gitlab-flow

Pour les logiciels volumineux tels que Facebook et Gmail, vous devrez peut-être introduire des branches de déploiement entre votre branche et la branche principale où les outils CI/CD> pourraient s'exécuter, avant même qu'ils ne soient disponibles. à la production. L’idée est d’introduire plus de protection dans la version de production car elle est utilisée par des millions de personnes.

70
Gayan Pathirage

J'utilise le modèle git-flow depuis plus d'un an et c'est bon.

Mais cela dépend vraiment de la manière dont votre application sera développée et déployée.

Cela fonctionne bien lorsque vous avez une application dont le flux de développement/déploiement est lent.

Mais par exemple, comme GitHub, nous avons une application qui a un flux de développement/déploiement rapide, que nous déployons au quotidien, et parfois plusieurs fois par jour. Dans ce cas, git-flow tend à tout ralentir à mon avis, et j'utilise GitHub. couler.

L'autre chose à considérer est que git-flow n'est pas un git standard, donc vous pouvez, et quand je dis que vous pourriez, je veux dire, vous allez trouver des développeurs qui ne le savent pas, et puis il y a la courbe d'apprentissage, plus chance de tout gâcher. De plus, comme mentionné ci-dessus, quelqu'un a développé un ensemble de scripts pour faciliter l'utilisation de git-flow, afin que vous n'ayez pas à vous rappeler toutes les commandes, cela vous aidera à les exécuter, mais vous rappeler du flux réel est votre travail. J'ai rencontré plus d'une fois lorsqu'un développeur ne savait pas s'il s'agissait d'un correctif ou d'une fonctionnalité, ou même pire, lorsqu'il ne se souvenait pas du flux et compliquait les choses.

Il y a au moins une interface graphique qui prend en charge git-flow pour Mac et Windows SourceTree .

Ces jours-ci, je me penche davantage vers le flux GitHub, en raison de sa simplicité et de sa facilité de gestion. Aussi, à cause de "déployer tôt déployez souvent" ...

J'espère que cela t'aides

34
Diego Antunes