مراجعة كود Discourse

:discourse2: ملخص يسمح فحص كود Discourse بمراجعة التزامات GitHub على منصة Discourse.
:hammer_and_wrench: رابط المستودع https://github.com/discourse/discourse-code-review
:open_book: دليل التثبيت كيفية تثبيت الإضافات في Discourse

الميزات

ما هي؟

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

توفر سير عمل قويًا للغاية للفرق التي تحتاج إلى مراجعة جميع الالتزامات في أي عدد من المستودعات.

تتيح لك التأكد من أن عدة أعضاء في الفريق على علم بجميع التغييرات المطبقة على المستودعات. يمكنك تحديد الالتزامات للمتابعة، وتوزيع أعمال المراجعة، والمزيد.

ملاحظة: عند عرض موضوع يمكن الموافقة عليه، يمكنك استخدام زر y على لوحة المفاتيح للموافقة على الالتزامات بسرعة أكبر.

هل يمكنني رؤيته يعمل؟

يحتفظ Discourse بموقع https://review.discourse.org/، وهو موقع عام ويمكن لأي شخص التسجيل باستخدام بيانات اعتماد GitHub. يعرض الموقع فقط مجموعة فرعية من الميزات لغير الموظفين. قد يكون مثال أكثر اكتمالاً هو:

على GitHub، يبدو نفس الموضوع هكذا:

التكوين

تعتمد الإضافة على Webhooks من GitHub لاكتشاف المستودعات والتغييرات فيها. للتكوين الأدنى، ستحتاج إلى تعيين الإعداد التالي إلى سلسلة سرية.

code review github webhook secret

بمجرد تعيينه في مستودع GitHub الخاص بك، قم بإعداد Webhook مع:

Payload URL: https://YOUR_DISCOURSE/code-review/webhook
Content Type: application/json
Secret: قيمة code review github webhook secret
Event Types:

  • تعليقات الالتزامات
  • تعليقات القضايا
  • طلبات السحب (Pull requests)
  • مراجعات طلبات السحب
  • تعليقات مراجعات طلبات السحب
  • الدفعات (Pushes)

توفر الإضافة إعدادات الموقع الإضافية التالية:

code review api username: GitHub مقيد للغاية بعدد طلبات API المجهولة المسموح بها، يتيح لك هذا الإعداد استخدام مفاتيح حساب مستخدم Discourse لطلبات /comments و /commit. هذا يقلل بشكل كبير من احتمالية الوصول إلى حدود المعدل.

code review catch up commits: عدد الالتزامات «للمطاردة» وإنشاء مواضيع لها عند مواجهة مستودع جديد.

code review default parent category: اختر فئة أب افتراضية للفئات التي تنشئها الإضافة.

code review pending tag: الوسم المراد تطبيقه على جميع الالتزامات غير المراجعة، افتراضيًا pending.

code review approved tag: الوسم المراد تطبيقه على الالتزامات المعتمدة، افتراضيًا approved.

code_review_followup_tag: الوسم المراد تطبيقه على التزامات المتابعة، افتراضيًا follow-up.

code review allow self approval: هل يُسمح للموظفين بالموافقة على التزاماتهم الخاصة؟

code review default mute new categories: يتم كتم الفئات الجديدة التي تنشئها مراجعة الكود للمستخدمين افتراضيًا.

code review skip duration minutes: عند النقر على زر التخطي في التزام، سيتم منع هذا الالتزام من الظهور مرة أخرى لمدة الدقائق المحددة بهذا الإعداد.

سجل التغييرات (CHANGELOG)

المهام المستقبلية (TODO)

إضافات

كيف يستخدم Discourse هذه الإضافة

TL;DR - تم تصميم هذه الإضافة لتكملة استخدام فريق Discourse لـ GitHub في مراجعة الكود.

مزيد من المعلومات

من @sam:

  • لا نزال نستخدم طلبات السحب (PRs) عبر واجهة GitHub ونحب القيام بطلبات السحب للعديد من التغييرات. لم يتغير شيء هنا. GitHub رائع، نحن نحب GitHub. لديهم سير عمل ممتاز للتغييرات التي لم يتم دمجها بعد. ومع ذلك…

  • سير عمل GitHub للتغييرات التي تم التزامها مباشرة في المستودع فظيع.

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

  • نحتاج إلى القدرة على التواصل بشكل خاص دون أن يعلم العالم كله بشأن تغييرات معينة. على سبيل المثال: يجب أن نقوم بنشر هذا الإصلاح الرائع إلى <أدخل اسم شركة عملاق> في أسرع وقت ممكن، @sam هل يمكنك الاعتناء به؟

  • نحتاج إلى القدرة على الموافقة على التغييرات المنفذة أو طلب المتابعة، وهذا ليس شيئًا توفره واجهة GitHub.

  • نحتاج إلى القدرة على تعيين التزامات معينة لمستخدم. لنفترض أن @sam قام بارتكاب التزام يحتوي على بعض الأخطاء. من الجيد أنه يمكننا تعيينه مباشرة لذلك الالتزام المحدد، تحديده للمتابعة، ثم متابعة متابعة ذلك.

  • Discourse رائع جدًا في كل شيء يتعلق بالمحادثات، والميزات الصغيرة تحدث فرقًا كبيرًا، يمكنني رؤية متى يكتب الناس. لا أحتاج أبدًا لتحديث الصفحات لظهور التغييرات. الاقتباس رائع حقًا، ورفعة الصور لطيفة، وهلم جرا.

  • Discourse جيد جدًا في حالة القراءة، تحصل على ضمانات قوية جدًا بأنك قرأت كل شيء مرة واحدة، مع GitHub ليس لدي أي فكرة عن الالتزامات التي قرأتها والتي لم أقرأها. لدينا طريقة فعالة للغاية للتعامل مع تدفق المعلومات.

والقائمة تطول…

لذا تعمل المراجعة كمكمل لـ GitHub، نستخدم GitHub حاليًا للتعامل مع التغييرات التي لم يتم دمجها بعد. ونستخدم المراجعة للتعامل بشكل صحيح مع التغييرات التي تم دمجها بالفعل.

71 إعجابًا

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

[اقتباس=“Discourse، المنشور:1، الموضوع:103142”]
نحن بحاجة إلى القدرة على الموافقة على التغييرات التي تم إجراؤها أو طلب متابعة، وهذا ليس شيئًا توفره واجهة مستخدم GitHub
[/اقتباس]

لا تقدم GitHub ذلك فيما يتعلق بالالتزامات لأن الافتراض هو أن هذا قد تم التعامل معه بالفعل في طلب السحب. ما الذي فاتني؟

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

أم أنه يهدف بشكل أساسي إلى دعم المناقشات الخاصة على المستودعات العامة؟

أود أن أحصل على مزيد من التبصر في فوائد استخدام هذا المكوّن الإضافي في سير عملك. شكرًا!

كانت في الأساس بقايا سير العمل السابقة في Discourse.

في الماضي، كنا نستخدمها للموافقة بأثر رجعي على مجموعات التغيير.

في هذه الأيام، تمر الأمور عبر قنوات العلاقات العامة، لذلك لا نستخدم المكوّن الإضافي كثيرًا.

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