الخلفية
في بعض الأحيان تحتاج السمات/الإضافات إلى إجراء تغييرات لا تتوافق إلا مع أحدث إصدار من Discourse. في هذه الحالة، يمكن توجيه الإصدارات الأقدم من Discourse لاستخدام إصدار “مثبت” أقدم من الإضافة.
يتم تحقيق ذلك باستخدام ملف .discourse-compatibility في جذر مستودع السمة/الإضافة. إنه ملف YAML حيث تحدد المفاتيح إصدار نواة Discourse، وتمثل القيم الإصدار المرتبط من السمة/الإضافة الخاصة بك.
يمكن تحديد إصدارات نواة Discourse باستخدام المعاملين <= و <. يعتبر <= هو الافتراضي لأسباب تاريخية، ولكن بشكل عام يكون استخدام < أكثر منطقية.
تثبيت إصدار سمة/إضافة
على سبيل المثال، إذا أجرت نواة Discourse تغييرًا أثناء 3.2.0.beta2-dev (الموجود في version.rb) وبدأت إضافتك/سمتك في الاعتماد عليه، فستضيف إدخالًا إلى ملف .discourse-compatibility كما يلي:
< 3.2.0.beta2-dev: abcde
حيث abcde هو مرجع إلى تجزئة الالتزام “القديمة” لـ PLUGIN الخاص بك والتي يجب استخدامها في الإصدارات الأقدم من Discourse.
الآن سيستخدم أي شخص يستخدم إصدارًا أقدم من Discourse (مثل 3.2.0.beta1 أو 3.1.4) الإصدار abcde من إضافتك/سمتك. سيستمر أي شخص على 3.2.0.beta2-dev أو أعلى في استخدام أحدث إصدار.
إدخالات متعددة
بمرور الوقت، يمكنك إضافة أسطر متعددة إلى ملف .discourse-compatibility. سيختار Discourse دائمًا “أدنى” مواصفات تتطابق مع إصدار نواة Discourse الحالي. لا يهم ترتيب الأسطر في الملف من الناحية الفنية، ولكننا نوصي بوضع أحدث الإدخالات في الأعلى.
‘العودة’ بالتغييرات لإصدارات Discourse القديمة
لنفترض ملف .discourse-compatibility مثل هذا، مع تثبيت مواصفات إصدار مختلفة على تجزئات الالتزام الخاصة بالإضافات:
< 3.2.0.beta1-dev: commithashfordiscourse31
< 3.1.0.beta1-dev: commithashfordiscourse30
إذا كنت بحاجة إلى “إعادة ترحيل” تغيير إلى Discourse 3.1، فستقوم بشيء مثل:
-
إنشاء فرع من الالتزام القديم (
git checkout -b my_branch_name commithashfordiscourse31) -
قم بتثبيت تغييرك ودفعه إلى الأصل. إذا كنت تستخدم ميزات حماية الفروع في GitHub، فقد ترغب في حماية هذا الفرع من الحذف العرضي
-
قم بتحديث ملف
.discourse-compatibilityعلى الفرع الرئيسي بحيث يشير الآن إلى تجزئة الالتزام الجديدة الخاصة بك على فرع دعم 3.1
مثال واقعي
إليك ملف .discourse-compatibility فعلي من إضافة discourse-solved. لاحظ أنه في وقت كتابة هذا التقرير، لا يزال يستخدم بناء الجملة “القديم” دون عوامل تشغيل < أو <= صريحة. لذلك، يتم تفسير كل سطر تلقائيًا على أنه <=.
هذه الوثيقة تخضع للتحكم في الإصدار - اقترح تغييرات على github.