Erfan Ansari
Erfan Ansari
خواندن ۴ دقیقه·۳ سال پیش

بهترین استراتژی برای گیت برنچینگ چیه؟


گیت و بقیه ورژن سیستم کنترل ها به توسعه دهنده های نرم افزار قدرت مدیریت کردن، پیگیری کردن و سازماندهی کردن کد رو دادن.

البته، هر توسعه دهنده و تیم توسعه متفاوتن و نیاز های منحصر به فردی دارن، اینجا هست که استراتژی گیت برنچینگ پا به میدون میذاره.

اینجا میخوام درباره سه تا از محبوب ترین استراتژی های برنچینگ گیت صحبت کنم، هر کدوم با فواید خودش.بهترین قسمت؟ هیچ کدوم از این workflow ها حکم اسمونی نیستن و میتونن با توجه به نیاز های هر شخص یا تیم تغییر کنن که بهترین نتیجه رو ارائه بدن.

نکته: در این مقاله به جای master از main استفاده شده.


Git Flow Branch Strategy


ایده اصلی پشت Git flow branching strategy این هست که کار رو روی انواع مختلف برنچ ایزوله کرد.

درکل پنج نوع برنچ مختلف وجود داره:

  • Main
  • Develop
  • Feature
  • Release
  • Hotfix

دو تا برنچ اصلی داخل استراتژی Git flow، برنچ های main و develop هستن. سه نوع برنچ ساپورتینگ هم با اهداف مختلف وجود دارن : featurerelease, and hotfix.

مزایا و معایب

استراتژی Git flow مزیت های زیادی داره اما با خودش یه سری چالش هم میاره.

مزایای استفاده از Git flow:

  1. انواع مختلف برنچ، سازماندهی کردن کار رو راحت و شهودی میکنه.
  2. پروسه اصولی این نوع توسعه اجازه تست کردن کارامدی رو میده.
  3. استفاده از برنچ های release اجازه میده که راحت و به طور مدام از چند ورژن مختلف پروداکشن کد ساپورت کرد.

چالش های استفاده از Git flow:

  1. بسته به پیچیدگی پروژه، استراتژی Git flow میتونه پروسه توسعه و انتشار رو بیش از حد پیچیده و کند بکنه.
  2. به خاطر چرخه توسعه طولانی، Git flow نمیتونه از CI/CD پشتیبانی کنه.

GitHub Flow Branch Strategy

استراتژی GitHub flow نسبتا workflow ساده ای هست که اجازه میده تیم های کوچیک تر، یا وب اپلیکیشن/پروژه هایی که نیاز ندارن از چند ورژن مختلف ساپورت کنن، سرعت توسعه اشون رو تسریع کنن.

در استراتژی GitHub flow، برنچ main همیشه شامل کد اماده production هست.

بقیه برنچ ها یعنی فیچر برنچ ها باید شامل کار روی فیچر های جدید و فیکس کردن باگ ها باشن و وقتی کار روشون تموم شد و review شدن روی برنچ main مرج بشن.

مواردی که باید هنگام کار با GitHub flow در نظر بگیرید:

هنگام کار با استراتژی GitHub flow، شش تا اصل هستن که باید بهشون پایبند باشید تا مطمئن بشید کد خوبی رو maintain کرده اید.

  1. هر کدی که داخل برنچ main هست باید قابل دیپلوی باشه.

۲. برای کار جدید روی پروژه یه برنچ با اسم گویا بسازید مثل new-oauth2-scopes.

۳. کار جدیدتون رو روی برنچ لوکال commit کنید و به طور منظم روی برنچ ریموت پوش کنید.

۴. برای کمک یا فیدبک، یا وقتی که فکر میکنید کدتون اماده مرج کردن با برنچ main هست،
pull request باز کنید.

۵. بعد از اینکه کارتون قبول و review شد، میتونه با برنچ main مرج بشه.

۶. وقتی کارتون با برنچ main مرج شد باید بلافاصله دیپلوی بشه.

مزایا و معایب

مزایای استفاده از GitHub flow:

  1. از بین سه استراتژی که تو این مقاله بهش اشاره شد، GitHub flow از همه ساده تره.
  2. به خاطر ساده بودن workflow، این استراتژی اجازه CI/CD رو میده.
  3. این استراتژی برای تیم های کوچک و وب اپلیکیشن ها عالی کار میکنه.

چالش های استفاده از GitHub flow:

  1. این استراتژی نمیتونه همزمان از چند ورژن مختلف کد production ساپورت کنه.
  2. نبود برنچ های اختصاصی توسعه این استراتژی رو بیشتر مستعد وجود باگ تو production میکنه.

GitLab Flow Branch Strategy


استراتژی GitLab flow با استراتژی GitHub flow شباهت داره، متمایز کننده اصلی وجود environment برنچ هایی مثل pre-production، production یا برنچ های release هست بسته به شرایط.

مثل دو استراتژی قبلی، GitLab flow هم یک برنچ main داره که شامل کدی هست که اماده دیپلوی شدنه، گرچه این برنچ کد اصلی برای انتشار رو شامل نمیشه.

در این استراتژی، برنچ feature شامل کدی میشه که فیچر اضافه کرده یا باگی رو فیکس کرده و بعد از تموم شدن،‌ review شدن و قبول شدن با برنچ main مرج میشه.

استفاده از GitLab flow برای چرخه انتشار:

استراتژی GitLab flow با دو نوع مختلف برای چرخه انتشار کار میکنه:

  1. انتشار ورژن بندی شده(Versioned Release): هر انتشار یک برنچ release داره که بر پایه برنچ main هست.فیکس کردن باگ ها باید اول با برنچ main مرج بشن، قبل از cherry-picked(انتخاب یه کامیت از یه برنچ و اعمالش رو یه برنچ دیگه) شدن با برنچ release.
  2. انتشار مداوم(Continuous Release): برنچ های production برای شامل شدن کد اماده دیپلوی استفاده میشن.پس وقتی کد اماده انتشار هست با برنچ production مرج میشه.

مزایای استفاده از GitLab flow:

  1. در مقایسه با استراتژی Git flow، استراتژی GitLab flow ساده تره.
  2. این استراتژی نسبت به استراتژی GitHub flow از ساختار بهتری برخورداره.
  3. بعد از انجام تغییرات جزئی، GitLab flow اجازه Continuous Delivery و انتشار ورژن بندی شده رو میده.

چالش های استفاده از GitLab flow:

  1. این استراتژی ساده ترین استراتژی گیت برنچینگ نیست.
  2. این استراتژی سازمان یافته ترین استراتژی نیست که میتونه باعث شلوغ و به هم ریخته شدن collaborate کردن بشه.

پس در کل بهترین استراتژی برای گیت برنچینگ چیه؟

جواب سوال بهترین استراتژی برای گیت برنچینگ چیه بسته به شما و محیط تیمتون، پروژه و نیاز های خاص توسعه اتون داره.

گزینه ای وجود نداره که بتونه واسه هر شرایطی بهترین انتخاب باشه و صرف نظر از اینکه از کدوم استفاده میکنید، احتمال اینکه بتونید با کمی تغییر بهینه اش کنید وجود داره.


برنامه نویسیprogramminggithubwebcode
someone who likes to learn and teach
شاید از این پست‌ها خوشتان بیاید