ما هو جيثب؟
GitHub هو نظامنا الأساسي للتحكم في إصدار البرنامج، بالإضافة إلى نظام CI/CD الخاص بنا (التكامل المستمر/النشر المستمر). تم بناء GitHub على Git، وهو نظام يتتبع كل تغيير يتم إجراؤه على برامجنا. يتيح لنا GitHub كمنصة إنشاء عمليات لتطوير ميزات جديدة وإصلاح الأخطاء من خلال مراجعات التعليمات البرمجية والاختبار الآلي.
بينما نستخدم واجهة مستخدم رسومية عند إنشاء طلبات السحب ومراجعة التعليمات البرمجية في GitHub، فمن المهم أن تتعلم كيفية العمل مع واجهة سطر أوامر Git محليًا. يُفضل هذا لأنه عندما تبدأ في استخدام Git في تطبيق رسومي محليًا، فمن المحتمل أنك تستخدم أدوات Git دون الفهم الكامل للأوامر الأساسية وما تفعله. يمكن أن يؤدي هذا إلى عمليات دمج غير مرغوب فيها وإنشاء تعارضات دمج.
دمج الصراعات
تحدث تعارضات الدمج عندما يتم تحرير نفس كتلة التعليمات البرمجية في الفرع الذي يريد دمجه والفرع الذي يريد الدمج فيه. يجب حل تعارضات الدمج يدويًا، سطرًا تلو الآخر، وبالتالي نريد تجنب تعارضات الدمج قدر الإمكان. يعد الفهم الجيد لأوامر Git أمرًا ضروريًا لتقليل تعارضات الدمج.
من المهم أن يكون لديك فهم جيد لـ Git، يرجى قراءة الأدلة التالية قبل متابعة هذا الدليل، للتأكد من أن جميع أساسيات git حاضرة في ذهنك:
فروع مميزة
يوجد في جميع مشاريع Git فرع "رئيسي" واحد على الأقل. يمثل هذا الفرع الحالة الحالية لبناء البرنامج ويجب أن يكون قابلاً للنشر دائمًا. إذا تم دمج بعض التعليمات البرمجية في الفرع المصنوع الذي يكسر المنتج، فسيؤدي ذلك إلى مقاطعة العمل لجميع المطورين، لأنهم سيبدأون فروعًا جديدة عن طريق نسخ التعليمات البرمجية من الفرع الرئيسي.
في العديد من مشاريع Git يُسمى الفرع الرئيسي "رئيسي" أو "رئيسي". في DXPR نستخدم فروعًا رئيسية متعددة يشير كل منها إلى الفروع الرئيسية المقابلة لنواة دروبال:
-
1.x
(لإصدار دروبال 8 والإصدارات الأحدث) -
7.x
(بالنسبة إلى Drupal 7، إصدار Drupal القديم)
اصطلاح تسمية الفروع
في الوثائق المذكورة أعلاه، تعلمت أن فروع الميزات هي فروع معزولة يمكن للمطورين تطوير الميزات فيها دون إجراء تغييرات على الفرع الرئيسي. في الواقع، لا يتم استخدام سير العمل هذا فقط لتطوير الميزات، ولكن أيضًا لإصلاح الأخطاء. يجب اختبار إصلاحات الأخطاء في فرع معزول ودمجها في الفرع الرئيسي فقط عند اختبار الإصلاح والتحقق من صحته.
نظرًا لأن مستودعاتنا تحتوي على فروع رئيسية متعددة، فإن هذا ينعكس في اصطلاح تسمية الفروع لدينا:
الشخص / الفرع المستهدف / #المسألة - وصف الفرع
فيما يلي تفصيل لاصطلاح تسمية الفرع:
- شخص - اسم صاحب الفرع. على سبيل المثال جور، رقية، شاعر، دينيس، الخ.
- فرع الهدف — إشارة إلى الفرع المستهدف الذي تريد الدمج فيه، على سبيل المثال،
1.x
. - #مشكلة - يجب ربط كل فرع بإصدار GitHub. أدخل رقم الإصدار هنا.
- وصف الفرع - قم بوصف ما بداخله، على سبيل المثال، " خطأ إصلاح عناصر التحكم في القفز أو تعيين رمز جديد لتعريف المعلمة".
نظرًا لأن فروعنا المعزولة تهدف إلى أكثر من مجرد تطوير الميزات، فسوف نسميها فروع الموضوع من الآن فصاعدًا.
مثال لاسم فرع الموضوع: jur/1.x/#99-fix-for-jumping-controls-bug
سحب سير عمل الطلب
في دليل GitHub المرتبط أعلاه، قرأت عن "تدفق GitHub". هذا التدفق هو في الأساس سير عمل طلب السحب. سأقوم بنسخ الخطوات الست المذكورة في الدليل وتوضيح الخطوات باستخدام اتفاقيات DXPR المحددة:
- إنشاء فرع: تسمح فروع المواضيع التي تم إنشاؤها من فرع النشر الأساسي (
1.x
أو7.x
) للفرق بالمساهمة في العديد من الجهود المتوازية. تحافظ فروع المواضيع قصيرة العمر، على وجه الخصوص، على تركيز الفرق وتؤدي إلى سفن سريعة. يتم إنشاء فروع المواضيع محليًا ودفعها إلى المستودع الأصلي على GitHub. - إضافة التزامات: تعمل لقطات جهود التطوير داخل الفرع على إنشاء نقاط آمنة وقابلة للإرجاع في تاريخ المشروع. من المهم أن تحتوي جميع الالتزامات على وصف للكود الموجود في الالتزام. لجعل طلبات السحب أكثر شفافية وأسهل للمراجعة، يُفضل تقسيم تغييرات التعليمات البرمجية الخاصة بك إلى التزامات معزولة تمثل زيادات في عملك، بدلاً من إنشاء التزام كبير واحد بعد أيام من البرمجة.
- فتح طلب سحب: تنشر طلبات السحب الجهود المستمرة للمشروع وتحدد مسار عملية التطوير الشفافة. عند فتح طلب السحب نضع الكلمات الرئيسية في الوصف ورقم الإصدار. إذا قام فرع الموضوع بإصلاح خطأ ما، فيجب أن يتضمن الوصف الكلمة الأساسية
fixes
و#id الخاص بالمشكلة التي تصف الخطأ الذي تم إصلاحه. على سبيل المثال "الإصلاحات رقم 90". نظرة عامة على الكلمات الرئيسية المتاحة . - الشيكات الآلية: في DXPR، ستقوم بعض المستودعات بمراجعة طلب السحب الخاص بك تلقائيًا عن طريق التحقق من الكود الخاص بك وفقًا لمعايير الترميز، أو تشغيل اختبارات الصندوق الأسود الآلية باستخدام السيلينيوم. يمكن العثور على حالة الشيكات ومخرجاتها في علامة التبويب "الشيكات" في صفحة طلب السحب الخاصة بك على GitHub. إذا فشل طلب السحب الخاص بك في عملية تحقق واحدة أو أكثر، فيجب عليك أولاً إصلاح هذه المشكلات حتى تتمكن من اجتياز جميع عمليات التحقق، قبل أن تطلب من أحد الأشخاص مراجعة الكود الخاص بك.
- مناقشة التعليمات البرمجية ومراجعتها: تشارك الفرق في مراجعات التعليمات البرمجية من خلال التعليق على طلبات السحب المفتوحة واختبارها ومراجعتها. تعد مراجعة الكود في صميم الثقافة المفتوحة والتشاركية. عند إرسال طلب سحب، فإن الشيء التالي الذي يجب عليك فعله هو طلب مراجعة باستخدام واجهة مستخدم GitHub.
- الدمج: عند النقر على الدمج، يقوم GitHub تلقائيًا بإجراء ما يعادل عملية "دمج git" المحلية. يحتفظ GitHub أيضًا بسجل تطوير الفرع بالكامل بناءً على طلب السحب المدمج. بعد دمج فرع الموضوع، يتم حذفه من مستودع أصل Github.
- النشر: يمكن للفرق اختيار أفضل دورات الإصدار أو دمج أدوات التكامل المستمر والعمل مع ضمان أن التعليمات البرمجية الموجودة في فرع النشر قد مرت بسير عمل قوي.
الحفاظ على البيئة المحلية الخاصة بك محدثة
عندما تعمل في فريق يدفع التعليمات البرمجية إلى نفس المستودع، كما هو الحال مع DXPR Builder repo، على سبيل المثال، فمن المحتمل أن يتم دمج التغييرات في الفروع الرئيسية بعد أن قمت بنسخ الفرع الرئيسي لإنشاء فرع الموضوع الخاص بك . عادة، هذه ليست مشكلة ولكن إذا تم إجراء التغييرات على نفس الملفات وكتل التعليمات البرمجية التي تقوم بتحريرها، فسوف تنشأ تعارضات الدمج. من أجل تقليل تعارضات الدمج، من المهم البقاء على اطلاع بالتغييرات التي تطرأ على الفروع الرئيسية في المستودع الأصلي.
هناك ثلاثة أشياء عليك القيام بها:
- قبل عمل نسخة من الفرع الرئيسي، قم بدمج كافة التغييرات الأخيرة في نسختك المحلية (
git pull origin 1.x
) - إذا كنت تعمل على فرع موضوع لأكثر من بضعة أيام، فحاول سحب التغييرات من الفرع الرئيسي في بداية كل يوم تعمل فيه على هذا الفرع
- امسح ذاكرة التخزين المؤقت Drupal على الموقع بعد سحب الكود الجديد
- قم بتشغيل البرنامج النصي لتحديث قاعدة البيانات
تشغيل تحديثات قاعدة البيانات
في بعض الأحيان، ستتضمن التغييرات التي يتم إجراؤها على وحدة دروبال تغييرات على مخطط قاعدة البيانات الخاصة بتكوين الموقع. إذا كان الأمر كذلك، فسيقوم مؤلف التغييرات بتضمين برنامج نصي لتحديث قاعدة البيانات. إذا كان موقعك يتعطل بعد إدخال تغييرات جديدة، فإن تشغيل البرنامج النصي للتحديث يعد حلاً ممكنًا. هناك طريقتان للقيام بذلك:
- في المتصفح: قم بزيارة /update.php في تثبيت Drupal الخاص بك. اتبع الخطوات الموجودة في المعالج.
- في المحطة، أدخل القرص المضغوط إلى المجلد الذي يحتوي على ملفات Drupal الخاصة بك. ثم قم بتشغيل
drush updb