لقد قمت بعمل fork لمستودع Discourse على GitHub. كيف يمكنني استبداله بتثبيت Discourse الحالي على موقعي؟

لقد قمت بعمل نسخة احتياطية من مستودع Discourse على GitHub. كيف يمكنني استبداله بتثبيت Discourse الحالي على موقعي؟ لقد جربت كل شيء، لكنني واجهت أخطاء في كل مرة. أضفت مستودعي الخاص من GitHub إلى ملف app.yml، لكنني لم أتمكن من المتابعة بسبب الأخطاء. حتى عندما تمكنت من إجراء التغييرات، كان يعيد تثبيت Discourse الأصلي دائمًا. كيف يمكننا تنفيذ هذه العملية بشكل صحيح؟

من المفيد أن تكون محددًا.

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

بعد إعادة الفحص، أجريت تعديلاً على الخطاب الذي كنت أقوم بتحليله، ولاحظت أن هذا التغيير مرئي في صفحة التحديث ضمن لوحة الإدارة. أقوم الآن بتحديثه؛ إذا نجح التعديل، فسأقوم بمراجعة هذه الرسالة وفقًا لذلك.

هذه هي الإعدادات في ملف app.yml الخاص بي، والذي قمت بإعادة بنائه دون مواجهة أي أخطاء. ومع ذلك، بعد مراجعة لاحقة، لم تظهر التعديلات التي أجريتها، على الرغم من أن Discourse لا يزال يعمل بشكل لا تشوبه شائبة.

run:
  - exec: echo "Beginning of custom commands"
  ## If you want to set the 'From' email address for your first registration, uncomment and change:
  ## After getting the first signup email, re-comment the line. It only needs to run once.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec:
     cd: /var/www/discourse
     cmd:
         - sudo -u discourse git remote set-url origin https://github.com/KilicSelcuk/discourse.git
         - sudo -u discourse git fetch origin
         - sudo -u discourse git checkout origin/main
         - sudo -u discourse git remote set-branches --add origin main
         - sudo -u discourse git remote set-branches origin tests-passed
         - sudo -u discourse git reset --hard origin/main
  - exec: echo "End of custom commands"

إذًا، عندما تقوم بعرض المصدر والنظر إلى السطر السادس تقريبًا، هل يتوافق تجزئة الالتزام (commit hash) في سلسلة الإصدار مع أحدث التزام في المستودع المتفرع (forked repository) الخاص بك؟

اعتقدت أنني أكملت المهمة، ولكن يبدو أنها غير فعالة. آخر تحديث ظاهر في صفحة تحديث المسؤول هو: https://github.com/KilicSelcuk/discourse/commit/e44347414a8325ec25e5892c35bcd889d39a6668.

ومع ذلك، فإن التعديلات الفعلية التي أجريتها تنعكس هنا: Commits · KilicSelcuk/discourse · GitHub.

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

أحدث تكوين لدي هو كالتالي:

## أي أوامر مخصصة لتشغيلها بعد البناء
run:
  - exec: echo "بداية الأوامر المخصصة"
  ## لتعيين عنوان البريد الإلكتروني 'من' لتسجيلك الأولي، قم بإلغاء التعليق وتعديل:
  ## بعد استلام البريد الإلكتروني الأول للتسجيل، أعد التعليق على السطر. يحتاج فقط إلى التشغيل مرة واحدة.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec:
     cd: /var/www/discourse
     cmd:
         - sudo -u discourse git remote set-url origin https://github.com/KilicSelcuk/discourse.git
         - sudo -u discourse git fetch origin
         - sudo -u discourse git checkout origin/main
         - sudo -u discourse git remote set-branches --add origin main
#         - sudo -u discourse git remote set-branches origin tests-passed
#         - sudo -u discourse git branch -u origin/main
         - sudo -u discourse git reset --hard origin/main

حل هذه المشكلة سيكون مفيدًا. لم أتمكن من العثور على مورد مفيد في المنتدى، ولكن قد يكون بمثابة مرجع إرشادي لمن يتبعون.

هذه عادة فكرة سيئة. يجب عليك إجراء التغييرات في إضافة (plugin).

إعجابَين (2)

بالفعل، كنت أقوم بذلك في الأصل، ولكن بمجرد دمج المكون الإضافي في النواة، لم يعد بإمكاني تعديله. للأسف، أثبتت الحلول المقترحة أيضًا أنها غير فعالة: Overriding user_guardian.rb in a plugin (no fork necessary!) - #24

إذا كنت قد قمت بعمل fork لإضافة، فيجب عليك حذف الإضافة المضمنة واستنساخ نسختك.

أعتقد أنني أخبرتك بهذا في موضوع آخر. أنت بالتأكيد تريد عمل fork للإضافة فقط وليس التطبيق بأكمله وجميع الإضافات الأخرى.

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

أواجه خطأً في كل مرة أحاول فيها تثبيت المكون الإضافي. إذا كان لدي المزيد من الوقت، سأحاول مرة أخرى: Overriding user_guardian.rb in a plugin (no fork necessary!) - #24

هذه هي الطريقة لحل مشكلتك. إذا كان لديك خطأ وتريد المساعدة، يجب عليك تحديد الخطأ بالضبط، وتضمين قسم الإضافات (plugins) في ملف yml الخاص بك ورابط إلى المكون الإضافي الذي قمت بتشعبيه.

4 إعجابات

للأسف، أنا أسعى جاهدًا لحل المشكلة؛ لقد شاركت الخطأ في هذه المسألة أيضًا، لكنني لم أجد حلاً بعد. Overriding user_guardian.rb in a plugin (no fork necessary!) - #24

هل تعتقد أنني أرتكب خطأ في إعداد هذا؟ تشير تحديثات Discourse إلى وجود تغيير، لكنها تظهر التغيير من المستودع المحلي الخاص بي بدلاً من التغيير من Discourse. أقوم بالتحديث، لكن لا شيء يتغير؛ لا يزال التحديث يظهر. (أعتقد أنه يتعرف على تعديلاتي، ولكن عندما أقوم بالتحديث، فإنه يسحب من المستودع الرئيسي):

## أي أوامر مخصصة لتشغيلها بعد البناء
run:
  - exec: echo "بداية الأوامر المخصصة"
  ## إذا كنت ترغب في تعيين عنوان البريد الإلكتروني 'من' لتسجيلك الأول، قم بإلغاء التعليق وتغييره:
  ## بعد الحصول على البريد الإلكتروني الأول للتسجيل، أعد التعليق على السطر. يحتاج فقط إلى التشغيل مرة واحدة.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec:
     cd: /var/www/discourse
     cmd:
         - sudo -u discourse git remote set-url origin https://github.com/KilicSelcuk/discourse.git
         - sudo -u discourse git fetch --tags --prune-tags --prune --force origin
         - sudo -u discourse git checkout origin/main
         - sudo -u discourse git remote set-branches --add origin main
         - sudo -u discourse git remote set-branches origin tests-passed
#         - sudo -u discourse git branch -u origin
         - sudo -u discourse git reset --hard origin/main
  - exec: echo "نهاية الأوامر المخصصة"

نعم. أخبرتك كيف تضمن المكون الإضافي المتفرع الخاص بك فقط وأنت لا تفعل ذلك.

4 إعجابات

بالفعل، لقد قمت بهذه المهمة: Overriding user_guardian.rb in a plugin (no fork necessary!) - #24. كما اقترحت، جربت كلا الطريقتين. أسفر النهج الأول عن خطأ، كما هو موثق هنا: Overriding user_guardian.rb in a plugin (no fork necessary!) - #24.

الطريقة الثانية جعلت الموقع غير متاح. أنا أبحث عن حلول بديلة في سعيي للتوصل إلى حل، لكن التقدم كان محدودًا، مما دفعني إلى التفكير في طرق أخرى.

نظرًا لأنني أفضل عدم إجراء تعديلات واسعة، فقد فكرت في عمل نسخة من Discourse. سأقوم ببساطة بتحديث نسختي بأحدث التغييرات من المستودع الرئيسي في كل مرة، ثم أعيد تطبيق التعديلات التي أجريتها فقط، وأقبل هذا النهج.

يتمثل تحديي الرئيسي في تحديد حل فعال وصحيح. أنا على استعداد لحذف الكود وإعادة كتابته، وتجربة أساليب جديدة. ومع ذلك، في مواجهة الأخطاء غير المؤكدة، لا يمكنني للأسف إنتاج حل نهائي.

شكرا

افعل كما يقترح @pfaffman.

أنا أفعل هذا مع العملاء وهو أفضل طريقة.

خاصة كمطور أقل خبرة، ستتعرض للمشاكل عند نسخ المستودع الرئيسي.

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

هذه وظيفة بدوام كامل. الأشخاص الذين قاموا بذلك قبل سنوات لا يزالون نادمين، وكانت الأمور تسير ببطء أكثر بكثير في ذلك الوقت.

أنا أفعل هذا بالفعل، ومع ذلك لا يزال ينتج عنه خطأ. أقدر محاولتك للمساعدة، لكنني ذكرت هذا بالفعل مرتين أو ثلاث مرات من قبل :confused:

أنت على حق، ولكن كيف يمكنني الاحتفاظ بالتحديثات التي تم إجراؤها على المكون الإضافي الأساسي داخل المكون الإضافي الخاص بي؟ ألا ينبغي لي نسخ الملفات الأساسية وتحميلها إلى المستودع الخاص بي؟ أم أن هناك طريقة لأتمتة هذه العملية؟

شكرا

لم تشارك ما حدث خطأً عندما جربت المكون الإضافي المتفرع فقط.

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

حاولت مرة أخرى وأدرجت تفاصيل الخطأ الذي واجهته هذه المرة (معظمها). هل يمكنك مراجعته: Overriding user_guardian.rb in a plugin (no fork necessary!) - #24

@kuaza لقد قمت بوضع علامة على هذا الموضوع بـ unsupported-install وسأقوم بإغلاقه. يرجى اتباع تعليمات التثبيت الرسمية إذا كنت ترغب في الحصول على المساعدة هنا في المستقبل. حظا سعيدا!

هناك بعض الجواهر أعلاه من @pfaffman و @merefield التي نأمل أن تستخدمها لمساعدتك في التعرف على كيفية العمل مع Discourse.

إعجابَين (2)