إرشادات طلب السحب
وثيقة شاملة لإرشادات تقديم طلبات السحب إلى مشاريع XOOPS. يضمن اتباع هذه الإرشادات عملية مراجعة سلسة وأوقات دمج أسرع.
قبل إنشاء طلب سحب
Section titled “قبل إنشاء طلب سحب”الخطوة 1: تحقق من المشاكل الموجودة
Section titled “الخطوة 1: تحقق من المشاكل الموجودة”1. انتقل إلى مستودع GitHub2. انتقل إلى علامة المشاكل3. ابحث عن المشاكل الموجودة المتعلقة بتغييرك4. فحص المشاكل المفتوحة والمغلقةالخطوة 2: انسخ المستودع
Section titled “الخطوة 2: انسخ المستودع”# انسخ المستودع على GitHub# انقر على زر "Fork" في صفحة المستودع
# استنسخ النسخة المتشعبةgit clone https://github.com/YOUR_USERNAME/XOOPS.gitcd XOOPS
# أضف upstream remotegit remote add upstream https://github.com/XOOPS/XOOPS.git
# تحقق من remotesgit remote -vالخطوة 3: أنشئ فرع ميزة
Section titled “الخطوة 3: أنشئ فرع ميزة”# حدّث main branchgit fetch upstreamgit checkout maingit merge upstream/main
# أنشئ فرع ميزة# استخدم أسماء وصفية: bugfix/رقم-المشكلة أو feature/الوصفgit checkout -b bugfix/123-fix-database-connectiongit checkout -b feature/add-psr-7-supportالخطوة 4: قم بالتغييرات
Section titled “الخطوة 4: قم بالتغييرات”# قم بالتغييرات على الملفات# اتبع إرشادات نمط الأكواد
# رتب التغييراتgit add .
# قم بالالتزام برسالة واضحةgit commit -m "إصلاح مشكلة انقطاع اتصال قاعدة البيانات"
# قم بالالتزامات المتعددة للتغييرات المنطقيةgit commit -m "أضف منطق إعادة المحاولة"git commit -m "تحسين رسائل الخطأ للتصحيح"معايير رسالة الالتزام
Section titled “معايير رسالة الالتزام”رسائل الالتزام الجيدة
Section titled “رسائل الالتزام الجيدة”استخدم رسائل واضحة ووصفية بعد هذه الأنماط:
# الصيغة<type>: <subject>
<body>
<footer>
# مثال 1: إصلاح الخطأfix: حل مشكلة انقطاع اتصال قاعدة البيانات
أضف آلية إعادة محاولة الأسي لاتصال قاعدة البيانات.الآن تعيد المحاولة حتى 3 مرات مع تأخيرات متزايدة.
Fixes #123متطلبات جودة الأكواد
Section titled “متطلبات جودة الأكواد”نمط الأكواس
Section titled “نمط الأكواس”اتبع إرشادات Code-Style:
<?php// جيد: نمط PSR-12namespace MyModule\Controller;
use MyModule\Model\Item;use MyModule\Repository\ItemRepository;
class ItemController{ private ItemRepository $repository;
public function __construct(ItemRepository $repository) { $this->repository = $repository; }
public function indexAction() { $items = $this->repository->findAll(); return $this->render('items', ['items' => $items]); }}متطلبات الاختبار
Section titled “متطلبات الاختبار”اختبارات الوحدة
Section titled “اختبارات الوحدة”namespace Tests\Feature;
use PHPUnit\Framework\TestCase;use Xoops\Database\XoopsDatabase;
class DatabaseConnectionTest extends TestCase{ private XoopsDatabase $database;
protected function setUp(): void { $this->database = new XoopsDatabase(); }
public function testConnectionWithValidCredentials() { $result = $this->database->connect(); $this->assertTrue($result); }
public function testConnectionWithInvalidCredentials() { $this->database->setCredentials('invalid', 'invalid'); $result = $this->database->connect(); $this->assertFalse($result); }}تشغيل الاختبارات
Section titled “تشغيل الاختبارات”# قم بتشغيل جميع الاختباراتvendor/bin/phpunit
# قم بتشغيل ملف اختبار محددvendor/bin/phpunit tests/Feature/DatabaseConnectionTest.php
# قم بتشغيل مع الغطاءvendor/bin/phpunit --coverage-html coverage/إنشاء طلب السحب
Section titled “إنشاء طلب السحب”صيغة عنوان PR
Section titled “صيغة عنوان PR”[Type] Short description (fix/feature/docs)
أمثلة:- [FIX] حل مشكلة انقطاع اتصال قاعدة البيانات (#123)- [FEATURE] تطبيق واجهات رسالة HTTP المتوافقة مع PSR-7- [DOCS] تحديث مرجع API لفئة Criteriaعملية مراجعة الأكواس
Section titled “عملية مراجعة الأكواس”ما يبحث عنه المراجعون
Section titled “ما يبحث عنه المراجعون”-
الصحة
- هل يحل الأكواد المشكلة المذكورة؟
- هل تم التعامل مع الحالات الحدية؟
- هل معالجة الأخطاء مناسبة؟
-
الجودة
- هل يتبع معايير الأكواس؟
- هل يمكن صيانته؟
- هل اختبر بشكل جيد؟
-
الأداء
- هل يوجد تراجع في الأداء؟
- هل الاستعلامات محسّنة؟
- هل استخدام الذاكرة معقول؟
-
الأمان
- هل التحقق من الإدخال موجود؟
- هل الحماية من حقن SQL موجودة؟
- هل المصادقة/التخويل صحيحة؟
بعد الدمج
Section titled “بعد الدمج”التنظيف
Section titled “التنظيف”# الانتقال إلى maingit checkout main
# تحديث maingit pull upstream main
# حذف الفرع المحليgit branch -d bugfix/123-fix-database-connection
# حذف من forkgit push origin --delete bugfix/123-fix-database-connectionملخص أفضل الممارسات
Section titled “ملخص أفضل الممارسات”- أنشئ رسائل التزام وصفية
- اجعل طلبات السحب مركزة وأحادية الغرض
- أدرج الاختبارات للوظائف الجديدة
- حدّث التوثيق
- أرجع المشاكل ذات الصلة
- اجعل وصف PR واضحاً
- استجب بسرعة للمراجعات
لا تفعل
Section titled “لا تفعل”- لا تدرج التغييرات غير ذات الصلة
- لا تدمج main في فرعك (استخدم rebase)
- لا تفرض الدفع بعد بدء المراجعة
- لا تتخطَّ الاختبارات
- لا تقدم أعمال قيد الإنجاز
- لا تتجاهل تعليقات مراجعة الأكواس
التوثيق ذات الصلة
Section titled “التوثيق ذات الصلة”- المساهمة - نظرة عامة على المساهمة
- نمط الأكواس - إرشادات نمط الأكواس
- اختبار - أفضل ممارسات الاختبار
- ADR Index - إرشادات المعمارية
آخر تحديث: 2026-01-31 ينطبق على: جميع مشاريع XOOPS المستودع: https://github.com/XOOPS/XOOPS