حفاظت از شعبه بخش مهمی برای اطمینان از اینکه تصادفات و اشتباهات در مخزن GitHub شما اتفاق نمی افتد است. آنها قوانینی را اجرا می کنند که هر کسی که می خواهد commit ها را انجام دهد یا درخواست های کشش را در مخزن شما ادغام کند باید از آنها پیروی کند.
چرا حفاظت از شعبه ضروری است؟
حفاظت از شعبه به معنای جلوگیری از اعمال ناخواسته است. میتوانید قوانینی را تنظیم کنید تا نیاز به بررسی درخواست کشش داشته باشید، نیاز به تکمیل آزمایشها قبل از ادغام کنید، یا نیاز به تعهدات امضا شده برای تأیید صحت داشته باشید.
به طور پیشفرض، حفاظت شاخهها، فشارهای اجباری را غیرفعال میکند و از حذف شاخهها جلوگیری میکند. اینها دو موردی هستند که شما اساساً هرگز نمی خواهید به طور مرتب اتفاق بیفتد، و هرگز بدون رضایت صریح کسی که بتواند استثنا قائل شود و محافظت از شعبه را غیرفعال کند، هرگز نمی خواهید اتفاق بیفتد.
این برای امنیت خوب است، به ویژه در پروژه های بزرگتر یا مخازن منبع باز که در آن نگهبانان می خواهند یک فرآیند ارسال و تایید خاص را برای تغییرات جدید اعمال کنند. همچنین میتوان شعبهها را بهطور کامل برای افراد غیر سرپرست قفل کرد، که میتوان از آن برای اعمال مجوز اضافی برای شعبههای انتشار/تولید استفاده کرد.
حفاظت از شعبه، به طور پیش فرض، برای مدیران اعمال نمی شود. شما همچنین می توانید به افراد اجازه خاصی بدهید تا آنها را دور بزنند. اگر نمیخواهید ادمینها یا افراد دیگری بتوانند قوانین خاصی را دور بزنند، میتوانید این را برای هر قانون غیرفعال کنید.
حفاظت از شعبه به صورت رایگان برای مخازن عمومی در دسترس است، اما برای مخازن خصوصی بدون تیم GitHub یا Enterprise در دسترس نیست.
قوانین حفاظت از شعبه GitHub چه کاری انجام می دهند؟
تنظیمات زیادی وجود دارد که می توانید برای محافظت از شاخه ها فعال کنید، و همه آنها کارهای مختلفی را انجام می دهند. در اینجا برخی از مفیدترین آنها آورده شده است:
- «لازم به بررسی درخواست کشش قبل از ادغام» اجازه ادغام PR در شعب محافظت شده را نمی دهد تا زمانی که یک یا چند نفر دارای مجوز درخواست را تأیید کنند. این به ویژه برای جلوگیری از ادغام یک روابط عمومی توسط یک فرد به تنهایی مفید است.
- “نیاز به حل مکالمه” تضمین می کند که فقط PR بسته و نهایی مجاز به ادغام هستند.
- «لازم به بررسی وضعیت قبل از ادغام» با خط لوله CI شما ادغام میشود تا آزمایشهایی را روی commitهای جدید انجام دهد تا تأیید شود که آنها چیزی را خراب نمیکنند. GitHub حتی یک API وضعیت commit دارد که می توانید از آن برای یکپارچه سازی خارجی استفاده کنید.
- «نیاز به استقرار برای موفقیت» معمولاً برای اطمینان از اینکه سازهها قبل از ادغام به درستی در محیطهای مرحلهبندی مستقر شدهاند استفاده میشود.
- “نیاز به تاریخچه خطی” از انتقال commit های ادغام به شاخه جلوگیری می کند، که نیاز به ادغام به ادغام اسکواش یا rebase دارد. تاریخچه ارتکاب خطی برای بسیاری از تیم ها ترجیح داده می شود زیرا ردیابی و بازگرداندن نسخه ها را بسیار آسان تر می کند.
- “نیاز به تعهدات امضا شده” تعهدات را به امضای GPG تحمیل می کند و تأیید می کند که آنها با کلید خصوصی کاربر ایجاد شده اند و توسط مهاجمی با دسترسی GitHub ایجاد نشده اند.
علاوه بر همه اینها، شما همچنین می توانید مجوزها را مستقیماً مدیریت کنید تا تصمیم بگیرید چه کسی می تواند به شعبه فشار وارد کند. برای مثال، معمول است که شعبههای انتشار دارای محدودیتهای اضافی باشند تا هر کارآموز تصادفی نتواند به طور تصادفی به تولید فشار بیاورد.
همچنین میتوانید شاخهها را کاملاً قفل کنید، مانند شاخههای بالادستی که نباید تغییر کنند.
علاوه بر این، در حالی که مدیران به طور پیشفرض توانایی دور زدن این قوانین را دارند، میتوانید آن را غیرفعال کنید و مطمئن شوید که هیچکس در مخزن شما نمیتواند قوانین را بدون غیرفعال شدن قوانین نقض کند.
نحوه تنظیم قوانین حفاظت از شاخه GitHub
قوانین حفاظت از شعبه در تنظیمات مخزن تنظیم شده است. روی دکمه تنظیمات مخزن خود کلیک کنید و سپس روی «Branch Protection» کلیک کنید.
شما باید یک فیلتر برای قانون حفاظت از شاخه تنظیم کنید. شما فقط می توانید آن را روی نام یک شاخه خاص مانند “main” تنظیم کنید یا می توانید از علامت های عام برای هدف قرار دادن چندین شاخه به طور همزمان استفاده کنید.
یک علامت عام نامحدود “*” برای همه شاخه ها اعمال می شود و قوانین حفاظت از شاخه های متعدد می توانند روی هم قرار گیرند. با این حال، شما نمی توانید دو قانون با یک فیلتر داشته باشید.
در مرحله بعد، این گزینه را خواهید داشت که تنظیمات حفاظت از هر شاخه را پیکربندی کنید. بهطور پیشفرض، فقط فشارها و حذفهای اجباری غیرفعال هستند، اما میتوانید هر کدام از کادرهای تأیید را در اینجا فعال کنید تا موارد دیگری را که میخواهید روشن کنید.
یکی از مواردی که بیشتر اوقات می خواهید روشن شود، قانونی است که مانع از دور زدن قوانین توسط ادمین ها می شود.
سپس، میتوانید این قانون را فعال کنید، اگرچه باید دوباره با برنامه موبایل GitHub احراز هویت کنید، زیرا تغییر قوانین حفاظت از شعبه یک اقدام محدود است. میتوانید با تلاش برای فشار دادن اجباری فعال بودن آن را آزمایش کنید—کلاینت Git شما باید خطا نشان دهد.