L'autre jour, il y avait un bel article, quoique controversĂ© - ArrĂȘtez d'utiliser GitFlow! (et une douzaine d'autres sur le mĂȘme sujet aprĂšs).
Ses principaux points étaient les suivants:
- GitFlow contredit la thĂšse «les branches devraient ĂȘtre de courte durĂ©e».
C'est important, car moins la branche vit, moins les risques de conflits (non seulement git, mais aussi logiques) - GitFlow décourage les rebases pour enregistrer les validations de fusion.
Oui, ils peuvent ĂȘtre enregistrĂ©s avec rebuys, mais pas les Ă©quipes Git Flow. - GitFlow nie l'approche Contunious Delivery, estimant que chaque acte de livraison doit ĂȘtre effectuĂ© par un ingĂ©nieur de publication, et en gĂ©nĂ©ral, vous pouvez voir qu'il se concentre uniquement sur un long cycle de publication.
- GitFlow n'est pas ami avec les microservices en plus des multi-référentiels (cependant, il n'y a pas grand chose à faire ici, c'est une idée qui se termine toujours mal)
Mais le problÚme avec GitFlow est qu'il n'est pas non plus ami avec les mono-référentiels.
Je suis moi-mĂȘme tombĂ© sur cela dans le processus de conception de pipelines CI: GitFlow interfĂšre monstrueusement lorsqu'il s'exĂ©cute au-dessus d'un rĂ©fĂ©rentiel unique avec plusieurs livrables, par exemple, lorsque le backend et le frontend sont sĂ©parĂ©s dans un mĂȘme rĂ©fĂ©rentiel - du fait qu'il vous permet de vous engager Ă libĂ©rer des branches, des conflits peuvent survenir avec la fusion inverse s'il existe plusieurs branches de publication Ă la fois. Oui, mĂȘme si c'est un, c'est tout de mĂȘme mauvais - dans de telles conditions, il est nĂ©cessaire de patcher les mĂ©canismes de libĂ©ration de GitFlow en principe, de sorte que des versions distinctes d'entitĂ©s au moins fonctionnent.
Alors que faire?
L'auteur de l'article original a été aidé par les indicateurs de développement + fonctionnalité basés sur le tronc - presque le tronc vert de Google, mais pas vraiment. Mais cela ne signifie pas du tout que vous ayez besoin de cette approche.
Tout d'abord, vous devez comprendre les priorités.
Ă quoi ressemblent vos sorties?
- ? , , , , ?
- ? , , WebSockets, . .
- ? LTS-, backport- ( , , 2016 ) ? canary beta-?
- Continuous Delivery?
?
- ( ) , ? design review merge/pull-request-, PR â 5 100 ?
- , ?
? , ?
, â . , flow , . Apache Kafka SQS â , , -, - , .
â . ( ) , , , , , , , .
, , â - . , JSON YAML, â , , .
, , , â , , â . , , . â , â .
flow
-, . , , ( ). , , , , , , , , v1 v2 .
, , . , , , CI, : .
â Continuous Delivery.
â , deliverables. - , , Google. â 10% - â -, .
. , :
CI-
deliverables:
- prestable/staging-
- alert- ( -)
- ( )
â flow, ,
, backport- â , . , (master/develop/trunk), , . git â cherry-picking. "" â , .
- ,
- , . JS â eslint-. Prettier ( ).
, 5-6 , â trunk-based development ( , ). â , , git - . Google , , , , . Facebook , , .
, Trunk-based â " ", , , . , CI/CD, :
feature flags â .
, .
. 2-3 , , ( , )
â merge queue, â , .
, , .
, - :
- github-flow
- CI,
- git-flow ( + )
- CD
- git-flow , CD, staging-,
- trunk-based
- trunk-based-
â . github-flow ( GitOps- â , ). , "". , , â .
, , , , .
Git â , , . , , .
Si vous sentez que votre Git vous fait mal - écrivez-moi, je serai heureux de vous aider.