مرحبًا بالجميع
، لقد دمجتُ ميزة جديدة ستساعد الإضافات (plugins) والمظاهر (themes) في تثبيت إصدارات معينة عند تثبيتها على نسخ أقدم من Discourse.
يمكنك الآن تضمين ملف .discourse-compatibility في الجذر (root) لمستودع إضافة أو مظهر، يحدد الإصدار الذي يجب استرداده (checkout) عند التثبيت على نسخ أقدم من Discourse.
المبررات
من المحبط تذكر أي الإضافات والمظاهر متوافقة مع أي إصدار من Discourse. بصفتك مسؤولًا (admin)، يجب أن يكون من الممكن مسح هذه التغييرات بسهولة وإيجاد الإصدار المناسب لنسختك من Discourse دون الاضطرار لقراءة سجل الالتزامات (commit history) للإضافة. وبصفتك كاتبًا لإضافة أو مظهر، يجب أن تتمكن من إدارة إصدارات التثبيت مع إجراء تغييرات غير متوافقة مع الإصدارات الأقدم، حتى لا تكسر التثبيتات القديمة.
تتسارع تحديثات برنامج Discourse بشكل كبير، وهو أمر رائع بلا شك، لكنه يجعل صيانة نسخ Discourse التي تحتوي على العديد من الإضافات أمرًا صعبًا جدًا في بعض الأحيان، خاصة إذا كنت تتبع إيقاعات إصدارات/نسخ أخرى مثل النسخة المستقرة الحالية. خطتي هنا هي تمكين نظام بيئي يخفف عملية التحديث لأولئك الذين يتبعون النسخة المستقرة أو أي إيقاع إصدار آخر، وتزويد مسؤولي المواقع بطريقة لاستعادة أي إصدار من الإضافة متوافق مع إصدار Discourse المستهدف بسرعة وبشكل تلقائي.
الإعلان الأصلي (تم استبداله الآن بالوثائق المرتبطة أعلاه)
التنفيذ
أول ما يجب ملاحظته: نحن نعتمد هنا على الوسوم (tags) في نواة Discourse، حيث أن نسخ بيتا (betas) من Discourse تُصدر بشكل متكرر بما يكفي لتمكيننا من تثبيت إصدارات الإضافات مقابلها. تثبيت الإصدارات مقابل تجزئات Git (git hashes) هو كابوس لعدة أسباب، لذا يمكننا استخدام git describe للحصول على أقرب وسم بيتا/مستقر.
في إضافة أو مظهر، ندعم الآن ملف توافق الإصدارات باسم .discourse-compatibility في الجذر. هذا الملف هو قائمة مرتبة تنازليًا (تبدأ بإصدارات Discourse الأحدث) تحدد خريطة توافق.
مثال
2.5.0.beta2: git-hash-1234e5f5d
2.4.4.beta6: 4444ffff33dd
2.4.2.beta1: named-git-tag-or-branch
بالنسبة لكل إضافة/مظهر، سيستمر التحديث أو إعادة البناء في استرداد التزام/فرع/وسم لاحق حتى يجد واحدًا يساوي الإصدار الحالي من Discourse أو يتجاوزه.
على سبيل المثال، بالنسبة لملف الإصدار أعلاه، إذا كان إصدار Discourse الحالي هو 2.4.6.beta12، فسيقوم بفحص الملف واختيار الإدخال الخاص بـ 2.5.0.beta2.
إذا كان إصدار Discourse الحالي هو 2.4.4.beta6، فسيقوم باختيار الإدخال المطابق لـ 2.4.4.beta6.
إذا لم يكن هناك إصدار لاحق، يبقى على الإصدار الحالي المسترد.
على سبيل المثال، بالنسبة لـ 2.5.0.beta3، لن يحدث أي تثبيت.
إذا لم يكن هناك إصدار سابق، يتم استرداد الأقدم المذكور في ملف الإصدار.
على سبيل المثال، بالنسبة لـ 2.2.1.beta22، سيتم استرداد أقدم إصدار ممكن بناءً على “الإصدار”، وهو الإدخال الخاص بـ 2.4.2.beta1.
الهدف هنا هو تخفيف عبء صيانة النشر البديل الذي لا يلتزم بدقة بـ “tests-passed” في المستقبل، ومنح المرونة للمسؤولين بشأن متى وأين يقومون بالترقية. نقوم بذلك من خلال منح كتاب الإضافات والمظاهر طريقة لتطوير تغييرات غير متوافقة مع الإصدارات الأقدم دون التأثير على التثبيتات على الإصدارات الأقدم من Discourse.
