Créez votre flux pour git à partir de zéro

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.


All Articles