Skip to content

Latest commit

 

History

History
81 lines (59 loc) · 8.8 KB

BRANCHING_MODEL.md

File metadata and controls

81 lines (59 loc) · 8.8 KB

Branching & Release Model (فارسی)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇧🇦 bs · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


OmniRoute از مدل انتشار چرخههای موازی استفاده میکند: یک شاخهٔ اختصاصی release/vX.Y.Z برای چرخهٔ فعال، main برای خط منتشرشده و یک تگ تغییرناپذیر vX.Y.Z هنگام انتشار آن چرخه. مشاهدهٔ ثبت شدن کامیتها هم در release/* و هم در main طبیعی است — این موضوع ناشی از اشتباه نیست.

جزئیات ویژهٔ نگهدارندگان در CLAUDE.md (قانون سختگیرانهٔ شمارهٔ ۲۱) و RELEASE_CHECKLIST.md آمده است. این صفحه خلاصهای عمومی برای مشارکتکنندگان است.

مرور کلی

مرجع نقش
release/vX.Y.Z چرخهٔ فعال — توسعهٔ روزمره و ادغام PRها برای آن نسخه
main خط منتشرشده — هنگام انتشار، چرخه را از طریق squash-merge دریافت میکند
vX.Y.Z (تگ) نشانگر انتشار — اشارهگری تغییرناپذیر به «آنچه منتشر شده است» که هنگام انتشار ایجاد میشود
flowchart LR
  A["شاخهٔ feat/fix"] --> B["PR → release/vX.Y.Z"]
  B --> C["نوک release/vX.Y.Z"]
  C --> D["PR انتشار با squash-merge → main"]
  D --> E["تگ vX.Y.Z"]
  C --> F["چرخهٔ بعدی: ایجاد release/vX+1 از نوک منجمدشده"]
Loading

PR من باید کدام شاخه را هدف قرار دهد؟

شاخهٔ فعال release/vX.Y.Z را هدف قرار دهید — نه main را.

  1. بالاترین شاخهٔ باز release/v* را پیدا کنید (نمونه در زمان نگارش: release/v3.8.49).
  2. شاخهٔ خود را از نوک آن ایجاد کنید (git fetch و سپس checkout یا rebase روی آن).
  3. PR را با base = همان release/vX.Y.Z باز کنید.

main شاخهٔ یکپارچهسازی روزمره نیست. PRهایی که به مقصد main باز میشوند، معمولاً پیش از ادغام باید به شاخهٔ دیگری هدایت شوند.

توقف موقت انتشار (چرخههای موازی)

هنگامی که یک انتشار در حال تطبیق نهایی است، یک issue نشانگر با برچسب release-freeze باز میشود. این کار توسعه را متوقف نمیکند:

  • شاخهٔ منجمدشدهٔ release/vX.Y.Z برای آن انتشار در اختیار مسئول انتشار است.
  • چرخهٔ بعدی، یعنی release/vX+1، از نوک منجمدشده ایجاد میشود تا مشارکتکنندگان بتوانند به ثبت تغییرات خود ادامه دهند.
  • PRهای بازی که همچنان شاخهٔ منجمدشده را هدف قرار دادهاند، باید به شاخهٔ فعال release/v* (بالاترین نسخه) هدایت مجدد شوند.

پیش از اینکه فرض کنید شاخهٔ موردنظر شما قابل ادغام است، وجود توقف موقت باز را بررسی کنید:

gh issue list --repo diegosouzapw/OmniRoute --label release-freeze --state open

سازوکار ادغام (برچسب queue توسط مالک → Mergify) در MERGE_TRAIN.md مستند شده است.

چرا هم شاخه و هم تگ؟

مصنوع طول عمر هدف
release/vX.Y.Z چرخهٔ در حال انجام PRهای بازبینیشده را جمعآوری میکند، وضعیت سبز CI را حفظ میکند و شاخهٔ پایهٔ PRها است
تگ vX.Y.Z همیشگی بیتهای دقیقی را که در npm / GitHub Releases منتشر شدهاند، مشخص میکند

شاخه کارگاه است؛ تگ بستهٔ مهرومومشده. پس از squash-merge در main، چرخهٔ بعدی روی release/vX+1 ادامه پیدا میکند، بدون اینکه منتظر تکمیل PR انتشار قبلی بماند.

مستندات مرتبط