سير عمل المساهمة
يرشدك هذا الدليل خلال العملية الكاملة للمساهمة في XOOPS، من الإعداد الأولي إلى دمج طلب السحب.
المتطلبات الأساسية
Section titled “المتطلبات الأساسية”قبل أن تبدأ المساهمة، تأكد من أن لديك:
- Git مثبت ومكون
- حساب GitHub (مجاني)
- PHP 7.4+ لتطوير XOOPS
- Composer لإدارة الاعتماديات
- معرفة أساسية بسير عمل Git
- الإلمام بقواعس السلوك
الخطوة 1: نسخ المستودع
Section titled “الخطوة 1: نسخ المستودع”على واجهة GitHub الويب
Section titled “على واجهة GitHub الويب”- انتقل إلى المستودع (مثل
XOOPS/XoopsCore27) - انقر على زر Fork في الزاوية العلوية اليمنى
- اختر مكان النسخ (حسابك الشخصي)
- انتظر حتى يكتمل النسخ
لماذا النسخ؟
Section titled “لماذا النسخ؟”- تحصل على نسختك الخاصة للعمل عليها
- لا يحتاج المسؤولون إلى إدارة فروع كثيرة
- لديك السيطرة الكاملة على نسختك
- تشير طلبات السحب إلى نسختك والمستودع الأصلي
الخطوة 2: استنسخ نسختك محلياً
Section titled “الخطوة 2: استنسخ نسختك محلياً”# استنسخ نسختك (استبدل YOUR_USERNAME)git clone https://github.com/YOUR_USERNAME/XoopsCore27.gitcd XoopsCore27
# أضف upstream remote لتتبع المستودع الأصليgit remote add upstream https://github.com/XOOPS/XoopsCore27.git
# تحقق من أن remotes تم ضبطها بشكل صحيحgit remote -v# origin https://github.com/YOUR_USERNAME/XoopsCore27.git (fetch)# origin https://github.com/YOUR_USERNAME/XoopsCore27.git (push)# upstream https://github.com/XOOPS/XoopsCore27.git (fetch)# upstream https://github.com/XOOPS/XoopsCore27.git (nofetch)الخطوة 3: إعداد بيئة التطوير
Section titled “الخطوة 3: إعداد بيئة التطوير”تثبيت الاعتماديات
Section titled “تثبيت الاعتماديات”# تثبيت اعتماديات Composercomposer install
# تثبيت اعتماديات التطويرcomposer install --dev
# لتطوير الوحدات النمطيةcd modules/mymodulecomposer installتكوين Git
Section titled “تكوين Git”# اضبط هويتك في Gitgit config user.name "Your Name"git config user.email "your.email@example.com"
# اختياري: اضبط إعدادات Git العالميةgit config --global user.name "Your Name"git config --global user.email "your.email@example.com"قم بتشغيل الاختبارات
Section titled “قم بتشغيل الاختبارات”# تأكد من أن الاختبارات تمر بحالة نظيفة./vendor/bin/phpunit
# قم بتشغيل مجموعة اختبارات محددة./vendor/bin/phpunit --testsuite unitالخطوة 4: إنشاء فرع الميزة
Section titled “الخطوة 4: إنشاء فرع الميزة”اتفاقية تسمية الفروع
Section titled “اتفاقية تسمية الفروع”اتبع هذا النمط: <type>/<description>
الأنواع:
feature/- ميزة جديدةfix/- إصلاح خطأdocs/- التوثيق فقطrefactor/- إعادة هيكلة الأكوادtest/- إضافة الاختباراتchore/- الصيانة والأدوات
أمثلة:
# فرع الميزةgit checkout -b feature/add-two-factor-auth
# فرع إصلاح الأخطاءgit checkout -b fix/prevent-xss-in-forms
# فرع التوثيقgit checkout -b docs/update-api-guide
# قم دائماً بالفرع من upstream/main (أو develop)git checkout -b feature/my-feature upstream/mainحافظ على تحديث الفرع
Section titled “حافظ على تحديث الفرع”# قبل البدء في العمل، قم بالمزامنة مع upstreamgit fetch upstreamgit merge upstream/main
# لاحقاً، إذا تغير upstreamgit fetch upstreamgit rebase upstream/mainالخطوة 5: قم بإجراء التغييرات
Section titled “الخطوة 5: قم بإجراء التغييرات”ممارسات التطوير
Section titled “ممارسات التطوير”- اكتب الأكواد باتباع معايير PHP
- اكتب الاختبارات للوظائف الجديدة
- حدّث التوثيق إذا لزم الأمر
- قم بتشغيل أدوات التدقيق وأدوات تنسيق الأكواد
فحوصات جودة الأكواد
Section titled “فحوصات جودة الأكواد”# قم بتشغيل جميع الاختبارات./vendor/bin/phpunit
# قم بالتشغيل مع التغطية./vendor/bin/phpunit --coverage-html coverage/
# قم بتشغيل PHP CS Fixer./vendor/bin/php-cs-fixer fix --dry-run
# قم بتشغيل تحليل PHPStan الثابت./vendor/bin/phpstan analyse class/ src/قم بحفظ التغييرات الجيدة
Section titled “قم بحفظ التغييرات الجيدة”# تحقق مما قمت بتغييرهgit statusgit diff
# رتب الملفات المحددةgit add class/MyClass.phpgit add tests/MyClassTest.php
# أو رتب جميع التغييراتgit add .
# قم بحفظ التغييرات برسالة وصفيةgit commit -m "feat(auth): add two-factor authentication support"الخطوة 6: احتفظ بالفرع متزامناً
Section titled “الخطوة 6: احتفظ بالفرع متزامناً”أثناء العمل على ميزتك، قد يتقدم الفرع الرئيسي:
# اجلب أحدث التغييرات من upstreamgit fetch upstream
# الخيار أ: Rebase (مفضل للحصول على سجل نظيف)git rebase upstream/main
# الخيار ب: Merge (أبسط لكن يضيف رسائل دمج)git merge upstream/main
# إذا حدثت تضاربات، قم بحلها ثم:git add .git rebase --continue # أو git merge --continueالخطوة 7: ادفع إلى نسختك
Section titled “الخطوة 7: ادفع إلى نسختك”# ادفع الفرع إلى نسختكgit push origin feature/my-feature
# عند الدفعات اللاحقةgit push
# إذا قمت بإعادة الترتيب، قد تحتاج إلى force push (استخدم بحذر!)git push --force-with-lease origin feature/my-featureالخطوة 8: إنشاء طلب سحب
Section titled “الخطوة 8: إنشاء طلب سحب”على واجهة GitHub الويب
Section titled “على واجهة GitHub الويب”- اذهب إلى نسختك على GitHub
- ستري إشعاراً بإنشاء PR من الفرع الخاص بك
- انقر على “Compare & pull request”
- أو انقر يدوياً على “New pull request” وحدد الفرع الخاص بك
عنوان وصف PR
Section titled “عنوان وصف PR”صيغة العنوان:
<type>(<scope>): <subject>أمثلة:
feat(auth): add two-factor authenticationfix(forms): prevent XSS in text inputdocs: update installation guiderefactor(core): improve performanceقالب الوصف:
## الوصفشرح موجز لما يفعله هذا PR.
## التغييرات- غيّر X من A إلى B- أضف الميزة Y- أصلح الخطأ Z
## نوع التغيير- [ ] ميزة جديدة (تضيف وظيفة جديدة)- [ ] إصلاح الخطأ (يصلح مشكلة)- [ ] تغيير فاصل (API/تغيير السلوك)- [ ] تحديث التوثيق
## الاختبار- [ ] اختبارات مضافة للوظيفة الجديدة- [ ] جميع الاختبارات الموجودة تمر- [ ] تم الاختبار يدوياً
## لقطات الشاشة (إن أمكن)أدرج لقطات قبل/بعد لتغييرات واجهة المستخدم.
## المشاكل ذات الصلةCloses #123Related to #456
## قائمة التحقق- [ ] يتبع الأكواد معايير النمط- [ ] قمت بمراجعة كودك الخاص- [ ] قمت بتعليق الأكواد المعقدة- [ ] تم تحديث التوثيق- [ ] لا توجد تحذيرات جديدة- [ ] الاختبارات تمر محلياًقائمة فحص مراجعة PR
Section titled “قائمة فحص مراجعة PR”قبل الإرسال، تأكد من:
- يتبع الأكواد معايير PHP
- تم تضمين الاختبارات وتمر
- تم تحديث التوثيق (إن لزم الأمر)
- لا توجد تضاربات دمج
- رسائل الالتزام واضحة
- تم الإشارة إلى المشاكل ذات الصلة
- وصف PR مفصل
- لا توجد رموز تصحيح أو سجلات وحدة تحكم
الخطوة 9: الاستجابة للتعليقات
Section titled “الخطوة 9: الاستجابة للتعليقات”أثناء مراجعة الأكواس
Section titled “أثناء مراجعة الأكواس”- اقرأ التعليقات بعناية - افهم التعليقات
- اطرح الأسئلة - إذا كانت غير واضحة، اطلب توضيحاً
- ناقش البدائل - ناقش الأساليب باحترام
- قم بإجراء التغييرات المطلوبة - حدّث الفرع الخاص بك
- قم بـ force-push للالتزامات المحدثة - إذا أعدت كتابة السجل
# قم بإجراء التغييراتgit add .git commit --amend # عدّل آخر التزامgit push --force-with-lease origin feature/my-feature
# أو أضف التزامات جديدةgit commit -m "Address feedback on PR review"git push origin feature/my-featureتوقع التكرار
Section titled “توقع التكرار”- تتطلب معظم PRs جولات مراجعة متعددة
- كن صبوراً وبناءاً
- اعتبر التعليقات فرصة تعلم
- قد يقترح المسؤولون عمليات إعادة هيكلة
الخطوة 10: الدمج والتنظيف
Section titled “الخطوة 10: الدمج والتنظيف”بعد الموافقة
Section titled “بعد الموافقة”بمجرد موافقة المسؤولين والدمج:
- GitHub يدمج تلقائياً أو ينقر المسؤول على الدمج
- الفرع الخاص بك يُحذف (عادة بشكل تلقائي)
- التغييرات موجودة في upstream
التنظيف المحلي
Section titled “التنظيف المحلي”# الانتقال إلى الفرع الرئيسيgit checkout main
# تحديث main بالتغييرات المدمجةgit fetch upstreamgit merge upstream/main
# حذف فرع الميزة المحليgit branch -d feature/my-feature
# حذف من نسختك (إذا لم يتم حذفه تلقائياً)git push origin --delete feature/my-featureرسم تخطيطي لسير العمل
Section titled “رسم تخطيطي لسير العمل”graph LR A[Fork Repository] --> B[Clone Fork] B --> C[Create Branch] C --> D[Make Changes] D --> E[Commit & Push] E --> F[Create PR] F --> G{Review} G -->|Approved| H[Merge] G -->|Changes Needed| I[Update PR] I --> G H --> J[Cleanup] J --> K[Done]السيناريوهات الشائعة
Section titled “السيناريوهات الشائعة”المزامنة قبل البدء
Section titled “المزامنة قبل البدء”# ابدأ دائماً من جديدgit fetch upstreamgit checkout -b feature/new-thing upstream/mainإضافة المزيد من الالتزامات
Section titled “إضافة المزيد من الالتزامات”# فقط ادفع مرة أخرىgit add .git commit -m "feat: additional changes"git push origin feature/new-thingإصلاح الأخطاء
Section titled “إصلاح الأخطاء”# آخر التزام به رسالة خاطئةgit commit --amend -m "Correct message"git push --force-with-lease
# العودة إلى الحالة السابقة (احذر!)git reset --soft HEAD~1 # احتفظ بالتغييراتgit reset --hard HEAD~1 # تجاهل التغييراتالتعامل مع تضاربات الدمج
Section titled “التعامل مع تضاربات الدمج”# أعد الترتيب وحل التضارباتgit fetch upstreamgit rebase upstream/main
# عدّل الملفات المتعارضة لحلها# ثم استمرgit add .git rebase --continuegit push --force-with-leaseأفضل الممارسات
Section titled “أفضل الممارسات”- احتفظ بالفروع مركزة على مشاكل واحدة
- اجعل الالتزامات صغيرة ومنطقية
- اكتب رسائل التزام وصفية
- حدّث الفرع الخاص بك بتكرار
- اختبر قبل الدفع
- وثّق التغييرات
- كن مستجيباً للتعليقات
لا تفعل
Section titled “لا تفعل”- لا تعمل مباشرة على فرع main/master
- لا تمزج التغييرات غير ذات الصلة في PR واحد
- لا تحفظ الملفات المُنشأة أو node_modules
- لا تفرض الدفع بعد أن يكون PR علنياً (استخدم —force-with-lease)
- لا تتجاهل تعليقات مراجعة الأكواس
- لا تنشئ PRs ضخمة (قسّمها إلى أجزاء أصغر)
- لا تحفظ البيانات الحساسة (مفاتيح API وكلمات المرور)
نصائح للنجاح
Section titled “نصائح للنجاح”التواصل
Section titled “التواصل”- اطرح أسئلة في المشاكل قبل بدء العمل
- اطلب التوجيه على التغييرات المعقدة
- ناقش الطريقة في وصف PR
- استجب للتعليقات بسرعة
اتبع المعايير
Section titled “اتبع المعايير”- راجع معايير PHP
- افحص إرشادات الإبلاغ عن المشاكل
- اقرأ نظرة عامة على المساهمة
- اتبع إرشادات طلب السحب
تعرّف على قاعدة الأكواس
Section titled “تعرّف على قاعدة الأكواس”- اقرأ أنماط الأكواس الموجودة
- ادرس التطبيقات المماثلة
- افهم العمارة
- افحص المفاهيم الأساسية
التوثيق ذات الصلة
Section titled “التوثيق ذات الصلة”- قواعس السلوك
- إرشادات طلب السحب
- الإبلاغ عن المشاكل
- معايير ترميز PHP
- نظرة عامة على المساهمة
#xoops #git #github #contributing #workflow #pull-request