گردش کار مشارکت
این راهنما شما را در فرآیند کامل مشارکت در XOOPS، از راه اندازی اولیه تا درخواست کشش ادغام شده، راهنمایی می کند.
پیش نیاز
Section titled “پیش نیاز”قبل از شروع مشارکت، مطمئن شوید که:
- Git نصب و پیکربندی شد
- حساب GitHub (رایگان)
- PHP 7.4+ برای توسعه XOOPS
- آهنگساز برای مدیریت وابستگی
- دانش اولیه از گردش کار Git
- آشنایی با قوانین رفتاری
مرحله 1: مخزن را فورک کنید
Section titled “مرحله 1: مخزن را فورک کنید”در رابط وب GitHub
Section titled “در رابط وب GitHub”- به مخزن بروید (به عنوان مثال،
XOOPS/XoopsCore27) - روی دکمه Fork در گوشه بالا سمت راست کلیک کنید
- محل فورک (حساب شخصی شما) را انتخاب کنید
- صبر کنید تا چنگال کامل شود
چرا فورک؟
Section titled “چرا فورک؟”- شما نسخه خود را برای کار بر روی آن دریافت می کنید
- نگهبانان نیازی به مدیریت بسیاری از شعب ندارند
- شما کنترل کامل چنگال خود را دارید
- درخواست های کشش به چنگال شما و مخزن بالادستی اشاره دارد
مرحله 2: چنگال خود را به صورت محلی کلون کنید
Section titled “مرحله 2: چنگال خود را به صورت محلی کلون کنید”# Clone your fork (replace YOUR_USERNAME)git clone https://github.com/YOUR_USERNAME/XoopsCore27.gitcd XoopsCore27
# Add upstream remote to track original repositorygit remote add upstream https://github.com/XOOPS/XoopsCore27.git
# Verify remotes are set correctlygit 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: محیط توسعه را تنظیم کنید”Dependencies را نصب کنید
Section titled “Dependencies را نصب کنید”# Install Composer dependenciescomposer install
# Install development dependenciescomposer install --dev
# For module developmentcd modules/mymodulecomposer installGit را پیکربندی کنید
Section titled “Git را پیکربندی کنید”# Set your Git identitygit config user.name "Your Name"git config user.email "your.email@example.com"
# Optional: Set global Git configgit config --global user.name "Your Name"git config --global user.email "your.email@example.com"تست ها را اجرا کنید
Section titled “تست ها را اجرا کنید”# Make sure tests pass in clean state./vendor/bin/phpunit
# Run specific test suite./vendor/bin/phpunit --testsuite unitمرحله 4: شاخه ویژگی ایجاد کنید
Section titled “مرحله 4: شاخه ویژگی ایجاد کنید”کنوانسیون نامگذاری شعبه
Section titled “کنوانسیون نامگذاری شعبه”این الگو را دنبال کنید: <type>/<description>
انواع:
feature/- ویژگی جدیدfix/- رفع اشکالdocs/- فقط مستنداتrefactor/- بازسازی کدtest/- تست اضافاتchore/- تعمیر و نگهداری، ابزار
مثال:
# Feature branchgit checkout -b feature/add-two-factor-auth
# Bug fix branchgit checkout -b fix/prevent-xss-in-forms
# Documentation branchgit checkout -b docs/update-api-guide
# Always branch from upstream/main (or develop)git checkout -b feature/my-feature upstream/mainشعبه را به روز نگه دارید
Section titled “شعبه را به روز نگه دارید”# Before you start work, sync with upstreamgit fetch upstreamgit merge upstream/main
# Later, if upstream has changedgit fetch upstreamgit rebase upstream/mainمرحله 5: تغییرات خود را ایجاد کنید
Section titled “مرحله 5: تغییرات خود را ایجاد کنید”شیوه های توسعه
Section titled “شیوه های توسعه”- بنویسید کد طبق استانداردهای PHP
- نوشتن تست برای عملکرد جدید
- **به روز رسانی اسناد ** در صورت نیاز
- لینترها و فرمت کننده های کد را اجرا کنید
بررسی کیفیت کد
Section titled “بررسی کیفیت کد”# Run all tests./vendor/bin/phpunit
# Run with coverage./vendor/bin/phpunit --coverage-html coverage/
# Run PHP CS Fixer./vendor/bin/php-cs-fixer fix --dry-run
# Run PHPStan static analysis./vendor/bin/phpstan analyse class/ src/تغییرات خوب را انجام دهید
Section titled “تغییرات خوب را انجام دهید”# Check what you changedgit statusgit diff
# Stage specific filesgit add class/MyClass.phpgit add tests/MyClassTest.php
# Or stage all changesgit add .
# Commit with descriptive messagegit commit -m "feat(auth): add two-factor authentication support"مرحله 6: Branch را همگام نگه دارید
Section titled “مرحله 6: Branch را همگام نگه دارید”در حین کار بر روی ویژگی خود، شاخه اصلی ممکن است پیشرفت کند:
# Fetch latest changes from upstreamgit fetch upstream
# Option A: Rebase (preferred for clean history)git rebase upstream/main
# Option B: Merge (simpler but adds merge commits)git merge upstream/main
# If conflicts occur, resolve them then:git add .git rebase --continue # or git merge --continueمرحله 7: به چنگال خود فشار دهید
Section titled “مرحله 7: به چنگال خود فشار دهید”# Push your branch to your forkgit push origin feature/my-feature
# On subsequent pushesgit push
# If you rebased, you might need force push (use carefully!)git push --force-with-lease origin feature/my-featureمرحله 8: درخواست کشش ایجاد کنید
Section titled “مرحله 8: درخواست کشش ایجاد کنید”در رابط وب GitHub
Section titled “در رابط وب GitHub”- به فورک خود در GitHub بروید
- یک اعلان برای ایجاد روابط عمومی از شعبه خود خواهید دید
- روی “Compare & pull request” کلیک کنید
- یا به صورت دستی روی “New pull request” کلیک کنید و شعبه خود را انتخاب کنید
عنوان و توضیحات روابط عمومی
Section titled “عنوان و توضیحات روابط عمومی”فرمت عنوان:
<type>(<scope>): <subject>مثال ها:
feat(auth): add two-factor authenticationfix(forms): prevent XSS in text inputdocs: update installation guiderefactor(core): improve performanceقالب توضیحات:
## DescriptionBrief explanation of what this PR does.
## Changes- Changed X from A to B- Added feature Y- Fixed bug Z
## Type of Change- [ ] New feature (adds new functionality)- [ ] Bug fix (fixes an issue)- [ ] Breaking change (API/behavior change)- [ ] Documentation update
## Testing- [ ] Added tests for new functionality- [ ] All existing tests pass- [ ] Manual testing performed
## Screenshots (if applicable)Include before/after screenshots for UI changes.
## Related IssuesCloses #123Related to #456
## Checklist- [ ] Code follows style guidelines- [ ] Self-reviewed own code- [ ] Commented complex code- [ ] Updated documentation- [ ] No new warnings generated- [ ] Tests pass locallyچک لیست بررسی روابط عمومی
Section titled “چک لیست بررسی روابط عمومی”قبل از ارسال، اطمینان حاصل کنید:
- کد از استانداردهای PHP پیروی می کند
- آزمون ها گنجانده شده و قبول می شوند
- اسناد به روز شد (در صورت نیاز)
- بدون تداخل ادغام
- پیام های تعهد واضح هستند
- مسائل مرتبط ارجاع داده شده است
- توضیحات روابط عمومی مفصل است
- بدون کد اشکال زدایی یا گزارش های کنسول
مرحله 9: به بازخورد پاسخ دهید
Section titled “مرحله 9: به بازخورد پاسخ دهید”در طول بررسی کد
Section titled “در طول بررسی کد”- ** نظرات را با دقت بخوانید ** - بازخورد را درک کنید
- سوال بپرسید - اگر واضح نیست، توضیح بخواهید
- درباره گزینه ها بحث کنید - با احترام در مورد رویکردها بحث کنید
- تغییرات درخواستی را ایجاد کنید - شعبه خود را به روز کنید
- **تعهدات به روز شده با فشار فشار ** - در صورت بازنویسی تاریخچه
# Make changesgit add .git commit --amend # Modify last commitgit push --force-with-lease origin feature/my-feature
# Or add new commitsgit commit -m "Address feedback on PR review"git push origin feature/my-featureانتظار تکرار
Section titled “انتظار تکرار”- بیشتر روابط عمومی ها به چندین دور بررسی نیاز دارند
- صبور و سازنده باشید
- بازخورد را به عنوان فرصت یادگیری مشاهده کنید
- نگهدارنده ها ممکن است Refactors را پیشنهاد کنند
مرحله 10: ادغام و پاکسازی
Section titled “مرحله 10: ادغام و پاکسازی”پس از تایید
Section titled “پس از تایید”پس از تایید و ادغام نگهبانان:
- ** GitHub خودکار ادغام می شود ** یا کلیک های نگهدارنده ادغام می شوند
- شاخه شما حذف می شود (معمولاً خودکار)
- تغییرات در بالادست است
پاکسازی محلی
Section titled “پاکسازی محلی”# Switch to main branchgit checkout main
# Update main with merged changesgit fetch upstreamgit merge upstream/main
# Delete local feature branchgit branch -d feature/my-feature
# Delete from your fork (if not auto-deleted)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 “همگام سازی قبل از شروع”# Always start freshgit fetch upstreamgit checkout -b feature/new-thing upstream/mainاضافه کردن تعهدات بیشتر
Section titled “اضافه کردن تعهدات بیشتر”# Just push againgit add .git commit -m "feat: additional changes"git push origin feature/new-thingرفع اشتباهات
Section titled “رفع اشتباهات”# Last commit has wrong messagegit commit --amend -m "Correct message"git push --force-with-lease
# Revert to previous state (careful!)git reset --soft HEAD~1 # Keep changesgit reset --hard HEAD~1 # Discard changesمدیریت تضادهای ادغام
Section titled “مدیریت تضادهای ادغام”# Rebase and resolve conflictsgit fetch upstreamgit rebase upstream/main
# Edit conflicted files to resolve# Then continuegit add .git rebase --continuegit push --force-with-leaseبهترین شیوه ها
Section titled “بهترین شیوه ها”انجام دهید- شعبه ها را روی مسائل تک متمرکز نگه دارید
Section titled “انجام دهید- شعبه ها را روی مسائل تک متمرکز نگه دارید”- تعهدات کوچک و منطقی انجام دهید
- پیام های commit توصیفی بنویسید
- شعبه خود را مرتباً به روز کنید
- قبل از هل دادن تست کنید
- تغییرات سند
- به بازخوردها پاسخگو باشید
- مستقیماً روی شاخه main/master کار کنید
- تغییرات نامربوط را در یک PR مخلوط کنید
- فایل های تولید شده یا node_modules را commit کنید
- فشار اجباری پس از عمومی شدن روابط عمومی (استفاده از —force-with-lease)
- بازخورد بررسی کد را نادیده بگیرید
- ایجاد روابط عمومی بزرگ (تقسیم به موارد کوچکتر)
- داده های حساس (کلیدهای API، کلمه عبور)
نکاتی برای موفقیت
Section titled “نکاتی برای موفقیت”ارتباط برقرار کنید
Section titled “ارتباط برقرار کنید”- قبل از شروع کار در مسائل مطرح کنید
- در مورد تغییرات پیچیده راهنمایی بخواهید
- درباره رویکرد در توضیحات روابط عمومی بحث کنید
- به بازخوردها به سرعت پاسخ دهید
استانداردها را دنبال کنید
Section titled “استانداردها را دنبال کنید”- استانداردهای PHP را مرور کنید
- دستورالعمل های گزارش مشکل را بررسی کنید
- بررسی اجمالی مشارکت را بخوانید
- دستورالعمل های درخواست کشش را دنبال کنید
Codebase را یاد بگیرید
Section titled “Codebase را یاد بگیرید”- الگوهای کد موجود را بخوانید
- پیاده سازی های مشابه را مطالعه کنید
- معماری را درک کنید
- مفاهیم اصلی را بررسی کنید
مستندات مرتبط
Section titled “مستندات مرتبط”- کد رفتار
- دستورالعمل های درخواست را بکشید
- گزارش موضوع
- استانداردهای کدنویسی PHP
- مشارکت در بررسی اجمالی
#xoops #git #github #مشارکت #جریان کاری #درخواست کشش