Trunk Based Development

Git avansat

Amanda Crawford-Adamo

Software and Data Engineer

Ce este Trunk Based Development?

  • Model CI/CD de ramificare a controlului surselor
  • Dezvoltatorii nu mai trimit cod în ramuri de lansare separate
  • Modificările provin din ramuri de scurtă durată trimise în main
  • Actualizări mici și frecvente

Grafic al commit-urilor în ramura main, cu ramura de lansare ca trunchi

Git avansat

Principii de bază ale Trunk Based Development

  1. Commit-uri frecvente în main
  2. Ramuri de funcții de scurtă durată (< 1 zi)
  3. Integrare continuă
  4. Indicatoare de funcții pentru lucrări incomplete

Reprezentare a fluxului TBD. Ramura de scurtă durată include un comutator de indicatoare de funcții la commit în main.

Git avansat

Indicatoare de funcții în TBD

  • Gestionează funcționalitățile incomplete
  • Protejează utilizatorii de impact
  • Funcționalitățile sunt lansate treptat

Exemplu de cod cu indicatoare de funcții

  if feature_flag_enabled('new_feature'):
      # New feature code
  else:
      # Old feature code
Git avansat

Integrare continuă în TBD

  • Commit-urile în main declanșează build și teste automate
  • Întreținere redusă și lansări mai rapide
  • Produsul este întotdeauna fiabil și stabil
  • Asigură cod securizat și conformitate cu standardele din industrie
  • Menține calitatea codului și reduce riscul de erori
Git avansat

Beneficii și provocări ale TBD

Beneficii:

  • Conflicte de fuzionare reduse
  • Cicluri de lansare mai rapide
  • Calitate îmbunătățită a codului
  • Colaborare mai bună

Provocări:

  • Necesită disciplină în echipă
  • Necesită testare solidă
  • Curbă inițială de învățare
  • Gestionarea funcționalităților incomplete
Git avansat

Bune practici

  1. Efectuați modificări mici frecvent
  2. Automatizați testarea și implementarea
  3. Folosiți indicatoare de funcții pentru lucrările incomplete
  4. Realizați revizuiri de cod periodice
  5. Monitorizați după implementare
Git avansat

Să exersăm!

Git avansat

Preparing Video For Download...