
Andrew Hanna

Andrew Hanna

التعريف الأول: التطوير المدفوع بالمصدر هو النموذج اللي بيبقى فيه مستودع Git بتاعك، مش أي org، هو مصدر الحقيقة لإعدادات Salesforce وكودها. الـ orgs بتتحوّل لبيئات قابلة للاستبدال بتنشر لها من المستودع، بدل ما تكون أماكن بتنقل بينها التغييرات. كل حاجة تانية في الدليل ده متفرّعة من الجملة دي.
في النموذج ده، كل تغيير بينزل في التحكم بالإصدارات الأول وبيوصل للـ org تاني. المستودع بيمثّل الحالة المقصودة للـ org، والنشر هو فعل مطابقة الـ org للنية دي.
وبيجي معاه ثلاث خصائص عملية:
النشر من org لـ org، سواء بحزم التغيير أو بمقارنة مباشرة بين org واتنين، بياخد org حية كمرجع. ده الفرق الحقيقي، وله نتايج.
خد بالك من اللي مش في القائمة: السرعة. النموذج ده مش أسرع تلقائيًا، لكنه قابل للتكرار، وهي خاصية مختلفة وأطول عمرًا.
تتبّع المصدر هو خاصية المنصة اللي بتسجّل أي المكوّنات اتغيّرت في الـ org أو في مشروعك المحلي من آخر مزامنة، علشان تسحب اللي اتحرّك فعلًا بدل ما تسحب كل حاجة وتقعد تقرأ الفروق.
الحد اللي بيقابل الناس هو التغطية. تتبّع المصدر متاح في الـ scratch orgs وفي صناديق Developer و Developer Pro، ومش متاح في كل مكان. يعني النموذج المدفوع بالمصدر لازم يجاوب عن البيئات اللي مش قادرة تتبّع التغييرات: الصناديق الكاملة والنسخ الجزئية والإنتاج. ودي بالظبط الـ orgs اللي بتحصل فيها تغييرات غير موثّقة.
اعمل كوميت للـ source format. الصيغتين بيوصفوا نفس البيانات الوصفية بشكل مختلف:
package.xml. تعديل حقل واحد بيعيد كتابة ملف كبير، فالفروق بتشيل
الكائن كله والمراجعة بتبقى مزعجة.
sfdx-project.json.
الأثر على المراجعة والدمج مش على الوظيفة. الملفات الصغيرة بتدي فروق مقروءة وتعارضات أقل بكتير لما اتنين يمسّوا نفس الكائن، وده بالظبط الموقف اللي النموذج ده موجود علشان ينجو منه.
ده السؤال اللي أغلب الشروح بتتخطاه، وهو اللي بيحدد هل النموذج هيصمد قدام فريق Salesforce حقيقي. دايمًا هيكون في حد غيّر حاجة في الإنتاج: إصلاح عاجل نص الليل، أو أدمن ضايف قيمة لقائمة، أو ترقية حزمة أعادت كتابة بيانات وصفية كنت عاملها كوميت.
احسم الثلاث نقط دول قبل الترحيل مش بعده:
أغلب فرق Salesforce أدمنز واستشاريين، مش مستخدمي سطر أوامر، وهنا بالظبط بتتعطّل الترحيلات. رتّب الخطوات بحيث محدش يحتاج يتعلم Git علشان يكمّل شغله:
هل كل أدمن لازم يتعلم Git؟
لأ. المطلوب إن المستودع يبقى المرجع. مين بيتعامل مع Git مباشرةً ده اختيار أدوات، مش خاصية في النموذج.
هل لازم أحوّل الـ org كلها لصيغة المصدر مرة واحدة؟
لأ. حوّل بحدود الحزم أو بالفرق. مستودع جزئي مرجعي فعلًا في نطاقه أحسن من مستودع كامل محدش واثق فيه.
هل ده نفس الـ CI/CD؟
لأ. التطوير المدفوع بالمصدر بيقرر مكان الحقيقة، والـ CI/CD بيأتمت نقلها للـ orgs. ممكن يبقى عندك الأول من غير التاني، والعكس نادرًا ما يكون مفيدًا.
وإيه موقف البيانات الوصفية اللي مش بتتحط في التحكم بالإصدارات؟
في إعدادات ومكوّنات مملوكة لحزم مش بترجع نظيفة. وثّقها كمستثناة وسيطر عليها بإجراء، بدل ما تدّعي إن المستودع مغطيها.
Serpent متبني بالظبط للفريق اللي الدليل ده بيوصفه: المستودع يفضل مصدر الحقيقة والأدمنز والاستشاريين شغالين في تذاكر، وفوقه نشر بالفروقات وكشف انحراف وتراجع بضغطة واحدة. في أدلة مرجعية أكتر في SF Guides.
بدون التزام.