
Serpent Team

Andrew Hanna

باختصار: اختار نموذج الفروع بناءً على مدخلين بس: حجم الفريق وتوزيع بيئات الاختبار، ومافيش تالت. أقل من أربعة مساهمين وبيئات تطوير بس؟ فرع main واحد وفروع ميزات قصيرة العمر. من أربعة لعشرة مع بيئة Partial Copy للاختبار؟ ضيف فرع إصدار لكل إطلاق وقف عند كده. أكتر من كده، أو عندك Full sandbox ونافذة تغيير ثابتة؟ ساعتها GitFlow بيستاهل طقوسه. أما فرع لكل بيئة فده قرار امتثال مش قرار هندسي.
ثلاث حاجات بس: فين الشغل الجاري بيعيش، وإزاي التغيير بيترقّى للبيئة اللي بعدها، وإيه اللي لازم يكون متحقق قبل ما حاجة توصل للإنتاج. أي حاجة تانية زخرفة على الرسم البياني.
وفرق Salesforce بتغلط هنا لأن النصيحة الهندسية العامة بتفترض حاجة مش صحيحة على المنصة: إن الفرع بيديك مكان تشغّله فيه.
فرع واحد طويل العمر، main، بيعكس دايمًا اللي المفروض يكون في الإنتاج.
فروع الميزات بتعيش أيام مش أسابيع، وبترجع عن طريق طلب دمج. أقل أجزاء متحركة، وأقل
تعارضات، وأصعب انضباط.
main للكود المُصدَّر، وdevelop للشغل المدمج، وفروع إصدار
وإصلاح عاجل. مبني للإصدارات المجدولة ولصيانة نسخة حية وأنت بتبني اللي بعدها. تكلفته
فرع دائم زيادة وشغل دمج كتير.
فرع بيعكس كل مؤسسة: تطوير، واختبار قبول، وتجريبي، وإنتاج. غالبًا أول حاجة الفرق بتبنيها، لأنها شبه مشهد المؤسسات اللي عندهم أصلًا. الترقية بتبقى دمج بين فروع البيئات، وده بيبان مرتب وبيتحول لدمج فوق دمج مع انتقاء تغييرات بشكل روتيني.
هنا بتقف معظم المقالات عن الفروع، وهنا بالظبط بيتاخد القرار الحقيقي.
develop دائم، عدد
بيئاتك ما بيبررهوش.
خد بالك إن إيقاع الإصدارات بالكاد ظهر. الإيقاع نتيجة لتوزيع بيئاتك مش مدخل مستقل، والفرق اللي بتختار على أساس الإيقاع المرغوب بتطلع بعملية بيئاتها مش قادرة تشيلها.
main مع الإنتاج وتعامل مع الفرق كقائمة شغل حقيقية مش فضول. غالبًا
المفاجآت هناك.
النموذج اللي بينجو من الاحتكاك بفريق حقيقي هو اللي الخط بيفرضه، مش اللي مكتوب في وثيقة التعريف. لو الاستشاري لازم يفتكر قواعد الفروع، القواعد هتتكسر في أول أسبوع إصدار مزحوم. Serpent بتشتغل بنظام تذاكر وGit في الخلفية، فالفرع وطلب الدمج ومسار الترقية بييجوا من التذكرة مش من الذاكرة. فيه أدلة تانية عن خطوط التسليم في مكتبة SF Guides بتاعتنا.
هل الـ trunk-based واقعي لفريق من الإداريين؟
أيوه، وغالبًا أسهل من GitFlow لأن فيه فرع واحد بس تفهمه. الانضباط المطلوب هو قصر عمر الفروع، مش إتقان Git.
محتاجين فرع Git لكل بيئة اختبار؟
لأ. البيئة هدف نشر. ربط فرع بكل مؤسسة هو السبب الرئيسي في الدمج فوق الدمج والانتقاء الدائم للتغييرات.
فرع الميزة في Salesforce يعيش قد إيه؟
أيام. الـ sprint هو الحد الأقصى. بعد كده انحراف البيانات الوصفية وتعارضات الـ Profiles بتكلف أكتر من فايدة الفرع.
الإصلاحات العاجلة بتشتغل إزاي في trunk-based؟
افرع من آخر commit اتصدّر، صلّح، تحقق، انشر، وبعدين ادمج فورًا في main علشان الإصلاح ما يضيعش في الإصدار الجاي.
هل النموذج بيتغير لفرق حزم 2GP؟
أيوه. افرع حسب إصدار الحزمة واختبر في scratch orgs. الفروع حسب البيئة بتنمذج مشهد مؤسسات فريق الحزم أصلًا مش بيصدّر ليه.
بدون التزام.