تثبيت إصدارات المكونات الإضافية والمظاهر لتثبيتات Discourse الأقدم (.discourse-compatibility)

:open_book: الخلفية

في بعض الأحيان تحتاج الثيمات/الإضافات إلى إجراء تغييرات لا تتوافق إلا مع أحدث إصدار من Discourse. في هذه الحالة، يمكن توجيه الإصدارات الأقدم من Discourse لاستخدام إصدار “مثبت” أقدم من الإضافة.

يتم تحقيق ذلك باستخدام ملف .discourse-compatibility في جذر مستودع الثيم/الإضافة. وهو ملف YAML حيث تحدد المفاتيح إصدار نواة Discourse، وتمثل القيم الإصدار المرتبط بثيمك/إضافتك.

يمكن تحديد إصدارات نواة Discourse باستخدام المعاملين <= و <. يُعد <= هو الافتراضي لأسباب تاريخية، ولكن بشكل عام يكون استخدام < أكثر منطقية.

:pushpin: تثبيت إصدار ثيم/إضافة

على سبيل المثال، إذا أجرت نواة Discourse تغييرًا أثناء 3.2.0.beta2-dev (الموجود في version.rb) وبدأت إضافتك/ثيمك في الاعتماد عليه، فستضيف إدخالاً إلى ملف .discourse-compatibility بهذا الشكل:

< 3.2.0.beta2-dev: abcde

حيث abcde هو مرجع إلى تجزئة الالتزام (commit hash) “القديم” لإضافتك والذي يجب استخدامه في الإصدارات الأقدم من Discourse.

الآن، سيستخدم أي شخص يستخدم إصدارًا أقدم من Discourse (على سبيل المثال، 3.2.0.beta1، أو 3.1.4) الإصدار abcde من إضافتك/ثيمك. سيستمر أي شخص على الإصدار 3.2.0.beta2-dev أو أحدث في استخدام أحدث إصدار.

:clipboard: إدخالات متعددة

بمرور الوقت، يمكنك إضافة أسطر متعددة إلى ملف .discourse-compatibility. ستختار Discourse دائمًا المواصفات “الأدنى” التي تتطابق مع إصدار نواة Discourse الحالي. لا يهم ترتيب الأسطر في الملف من الناحية الفنية، ولكننا نوصي بوضع أحدث الإدخالات في الأعلى.

:git_merged: ‘نقل التغييرات للخلف’ لإصدارات Discourse القديمة

لنتخيل ملف .discourse-compatibility بهذا الشكل، مع مواصفات إصدار مختلفة مثبتة على تجزئات التزام محددة للإضافة:

< 3.2.0.beta1-dev: commithashfordiscourse31
< 3.1.0.beta1-dev: commithashfordiscourse30

إذا احتجت إلى “نقل تغيير للخلف” إلى Discourse 3.1، فستقوم بما يلي:

  1. إنشاء فرع من الالتزام القديم (git checkout -b my_branch_name commithashfordiscourse31)

  2. التزام بالتغيير الخاص بك والدفع إلى الأصل (origin). إذا كنت تستخدم ميزات حماية الفروع في GitHub، فقد ترغب في حماية هذا الفرع من الحذف العرضي

  3. تحديث ملف .discourse-compatibility على الفرع الرئيسي بحيث يشير الآن إلى التزامك الجديد على فرع دعم 3.1

:globe_showing_europe_africa: مثال واقعي

إليك ملف .discourse-compatibility حقيقي من إضافة discourse-solved. لاحظ أنه في وقت الكتابة، لا يزال هذا يستخدم الصيغة القديمة دون أي عوامل تشغيل صريحة < أو <=. لذلك، يتم تفسير كل سطر تلقائيًا على أنه <=.


يتم التحكم في إصدار هذه الوثيقة - اقترح التغييرات على github.

17 إعجابًا

إذا كان الإصدار < 3.5.0.beta8-dev، فهل سيشمل 3.5.0؟

لا. يُعتبر الإصدار 3.5.0 “أعلى” من الإصدار التجريبي “3.5.0.beta8-dev”.

يمكنك دائمًا تجربة المقارنات على وحدة تحكم Ruby:


> Gem::Version.new("3.5.0") < Gem::Version.new("3.5.0.beta8-dev")
=> false
5 إعجابات

مفهوم. شكرا على الشرح!

إعجاب واحد (1)