เวิร์กโฟลว์การบริจาค
คู่มือนี้จะแนะนำคุณตลอดกระบวนการทั้งหมดในการร่วมให้ข้อมูลกับ XOOPS ตั้งแต่การตั้งค่าเริ่มต้นไปจนถึงคำขอดึงแบบรวม
ข้อกำหนดเบื้องต้น
หัวข้อที่มีชื่อว่า “ข้อกำหนดเบื้องต้น”ก่อนที่คุณจะเริ่มมีส่วนร่วม ตรวจสอบให้แน่ใจว่าคุณมี:
- Git ติดตั้งและกำหนดค่าแล้ว
- บัญชี GitHub (ฟรี)
- PHP 7.4+ สำหรับ XOOPS การพัฒนา
- ผู้แต่ง สำหรับการจัดการการพึ่งพา
- ความรู้พื้นฐานเกี่ยวกับเวิร์กโฟลว์ Git
- ความคุ้นเคยกับหลักจรรยาบรรณ
ขั้นตอนที่ 1: แยกพื้นที่เก็บข้อมูล
หัวข้อที่มีชื่อว่า “ขั้นตอนที่ 1: แยกพื้นที่เก็บข้อมูล”บนเว็บอินเตอร์เฟส GitHub
หัวข้อที่มีชื่อว่า “บนเว็บอินเตอร์เฟส GitHub”- ไปที่พื้นที่เก็บข้อมูล (เช่น
XOOPS/XoopsCore27) - คลิกปุ่ม แยก ที่มุมขวาบน
- เลือกตำแหน่งที่จะแยก (บัญชีส่วนตัวของคุณ)
- รอให้ส้อมเสร็จ
ทำไมต้องแยก?
หัวข้อที่มีชื่อว่า “ทำไมต้องแยก?”- คุณได้รับสำเนาของคุณเองเพื่อดำเนินการ
- ผู้ดูแลไม่จำเป็นต้องบริหารจัดการหลายสาขา
- คุณสามารถควบคุมส้อมของคุณได้อย่างเต็มที่
- Pull Requests อ้างอิงถึง fork ของคุณและ upstream repo
ขั้นตอนที่ 2: โคลนส้อมของคุณในพื้นที่
หัวข้อที่มีชื่อว่า “ขั้นตอนที่ 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: ตั้งค่าสภาพแวดล้อมการพัฒนา
หัวข้อที่มีชื่อว่า “ขั้นตอนที่ 3: ตั้งค่าสภาพแวดล้อมการพัฒนา”ติดตั้งการอ้างอิง
หัวข้อที่มีชื่อว่า “ติดตั้งการอ้างอิง”# Install Composer dependenciescomposer install
# Install development dependenciescomposer install --dev
# For module developmentcd modules/mymodulecomposer installกำหนดค่า Git
หัวข้อที่มีชื่อว่า “กำหนดค่า 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"เรียกใช้การทดสอบ
หัวข้อที่มีชื่อว่า “เรียกใช้การทดสอบ”# Make sure tests pass in clean state./vendor/bin/phpunit
# Run specific test suite./vendor/bin/phpunit --testsuite unitขั้นตอนที่ 4: สร้างสาขาคุณลักษณะ
หัวข้อที่มีชื่อว่า “ขั้นตอนที่ 4: สร้างสาขาคุณลักษณะ”อนุสัญญาการตั้งชื่อสาขา
หัวข้อที่มีชื่อว่า “อนุสัญญาการตั้งชื่อสาขา”ทำตามรูปแบบนี้: <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ให้สาขาทันสมัยอยู่เสมอ
หัวข้อที่มีชื่อว่า “ให้สาขาทันสมัยอยู่เสมอ”# Before you start work, sync with upstreamgit fetch upstreamgit merge upstream/main
# Later, if upstream has changedgit fetch upstreamgit rebase upstream/mainขั้นตอนที่ 5: ทำการเปลี่ยนแปลงของคุณ
หัวข้อที่มีชื่อว่า “ขั้นตอนที่ 5: ทำการเปลี่ยนแปลงของคุณ”แนวทางปฏิบัติในการพัฒนา
หัวข้อที่มีชื่อว่า “แนวทางปฏิบัติในการพัฒนา”- เขียนโค้ด ตามมาตรฐาน PHP
- เขียนการทดสอบ สำหรับฟังก์ชันใหม่
- อัปเดตเอกสาร หากจำเป็น
- เรียกใช้ linters และตัวจัดรูปแบบโค้ด
การตรวจสอบคุณภาพรหัส
หัวข้อที่มีชื่อว่า “การตรวจสอบคุณภาพรหัส”# 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/มุ่งมั่นในการเปลี่ยนแปลงที่ดี
หัวข้อที่มีชื่อว่า “มุ่งมั่นในการเปลี่ยนแปลงที่ดี”# 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: ทำให้สาขาอยู่ในซิงค์
หัวข้อที่มีชื่อว่า “ขั้นตอนที่ 6: ทำให้สาขาอยู่ในซิงค์”ในขณะที่ทำงานเกี่ยวกับฟีเจอร์ของคุณ สาขาหลักอาจก้าวหน้าไป:
# 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: ดันไปที่ส้อมของคุณ
หัวข้อที่มีชื่อว่า “ขั้นตอนที่ 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: สร้างคำขอดึง
หัวข้อที่มีชื่อว่า “ขั้นตอนที่ 8: สร้างคำขอดึง”บนเว็บอินเตอร์เฟส GitHub
หัวข้อที่มีชื่อว่า “บนเว็บอินเตอร์เฟส GitHub”- ไปที่ทางแยกของคุณบน GitHub
- คุณจะเห็นการแจ้งเตือนให้สร้าง PR จากสาขาของคุณ
- คลิก “เปรียบเทียบและดึงคำขอ”
- หรือคลิกด้วยตนเอง “คำขอดึงใหม่” และเลือกสาขาของคุณ
PR ชื่อและคำอธิบาย
หัวข้อที่มีชื่อว่า “PR ชื่อและคำอธิบาย”รูปแบบชื่อเรื่อง:
<type>(<scope>): <subject>ตัวอย่าง:
feat(auth): add two-factor authenticationfix(forms): prevent XSS in text inputdocs: update installation guiderefactor(core): improve performanceเทมเพลตคำอธิบาย:
markdown## 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 locallyPR รายการตรวจสอบการทบทวน
หัวข้อที่มีชื่อว่า “PR รายการตรวจสอบการทบทวน”ก่อนส่ง โปรดตรวจสอบให้แน่ใจว่า:
- รหัสเป็นไปตามมาตรฐาน PHP
- รวมการทดสอบและผ่าน
- อัปเดตเอกสารแล้ว (หากจำเป็น)
- ไม่มีข้อขัดแย้งในการรวม
- ข้อความยืนยันมีความชัดเจน
- มีการอ้างอิงประเด็นที่เกี่ยวข้อง
- PR คำอธิบายมีรายละเอียด
- ไม่มีรหัสแก้ไขข้อบกพร่องหรือบันทึกคอนโซล
ขั้นตอนที่ 9: ตอบสนองต่อคำติชม
หัวข้อที่มีชื่อว่า “ขั้นตอนที่ 9: ตอบสนองต่อคำติชม”ระหว่างการตรวจสอบโค้ด
หัวข้อที่มีชื่อว่า “ระหว่างการตรวจสอบโค้ด”- อ่านความคิดเห็นอย่างละเอียด - ทำความเข้าใจความคิดเห็น
- ถามคำถาม - หากไม่ชัดเจน ให้ขอคำชี้แจง
- หารือเกี่ยวกับทางเลือกอื่น - อภิปรายแนวทางด้วยความเคารพ
- ทำการเปลี่ยนแปลงตามที่ร้องขอ - อัปเดตสาขาของคุณ
- การคอมมิตแบบ Force-push ที่อัปเดต - หากเขียนประวัติใหม่
# 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คาดว่าจะมีการทำซ้ำ
หัวข้อที่มีชื่อว่า “คาดว่าจะมีการทำซ้ำ”- PR ส่วนใหญ่ต้องมีการตรวจสอบหลายรอบ
- มีความอดทนและสร้างสรรค์
- มองคำติชมเป็นโอกาสในการเรียนรู้
- ผู้ดูแลอาจแนะนำการปรับโครงสร้างใหม่
ขั้นตอนที่ 10: ผสานและล้างข้อมูล
หัวข้อที่มีชื่อว่า “ขั้นตอนที่ 10: ผสานและล้างข้อมูล”หลังจากได้รับการอนุมัติ
หัวข้อที่มีชื่อว่า “หลังจากได้รับการอนุมัติ”เมื่อผู้ดูแลอนุมัติและรวมเข้าด้วยกัน:
- การรวม GitHub อัตโนมัติ หรือการรวมการคลิกของผู้ดูแล
- สาขาของคุณถูกลบ (ปกติจะเป็นอัตโนมัติ)
- การเปลี่ยนแปลงอยู่ในต้นน้ำ
การล้างข้อมูลในท้องถิ่น
หัวข้อที่มีชื่อว่า “การล้างข้อมูลในท้องถิ่น”# 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แผนภาพขั้นตอนการทำงาน
หัวข้อที่มีชื่อว่า “แผนภาพขั้นตอนการทำงาน”mermaidgraph 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]สถานการณ์ทั่วไป
หัวข้อที่มีชื่อว่า “สถานการณ์ทั่วไป”การซิงค์ก่อนเริ่ม
หัวข้อที่มีชื่อว่า “การซิงค์ก่อนเริ่ม”# Always start freshgit fetch upstreamgit checkout -b feature/new-thing upstream/mainการเพิ่มความมุ่งมั่นเพิ่มเติม
หัวข้อที่มีชื่อว่า “การเพิ่มความมุ่งมั่นเพิ่มเติม”# Just push againgit add .git commit -m "feat: additional changes"git push origin feature/new-thingแก้ไขข้อผิดพลาด
หัวข้อที่มีชื่อว่า “แก้ไขข้อผิดพลาด”# 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การจัดการความขัดแย้งในการผสาน
หัวข้อที่มีชื่อว่า “การจัดการความขัดแย้งในการผสาน”# Rebase and resolve conflictsgit fetch upstreamgit rebase upstream/main
# Edit conflicted files to resolve# Then continuegit add .git rebase --continuegit push --force-with-leaseแนวทางปฏิบัติที่ดีที่สุด
หัวข้อที่มีชื่อว่า “แนวทางปฏิบัติที่ดีที่สุด”- ให้สาขามุ่งเน้นไปที่ประเด็นเดียว
- สร้างคอมมิตเล็กๆ แบบลอจิคัล
- เขียนข้อความยืนยันเชิงอธิบาย
- อัปเดตสาขาของคุณบ่อยๆ
- ทดสอบก่อนดัน
- การเปลี่ยนแปลงเอกสาร
- ตอบสนองต่อข้อเสนอแนะ
- ทำงานโดยตรงกับสาขาหลัก/สาขาหลัก
- ผสมผสานการเปลี่ยนแปลงที่ไม่เกี่ยวข้องไว้ใน PR เดียว
- คอมมิตไฟล์ที่สร้างขึ้นหรือ node_modules
- บังคับให้กดหลังจาก PR เป็นแบบสาธารณะ (ใช้ —force-with-lease)
- ละเว้นความคิดเห็นเกี่ยวกับการตรวจสอบโค้ด
- สร้าง PR ขนาดใหญ่ (แบ่งเป็นอันเล็ก ๆ )
- ส่งข้อมูลที่ละเอียดอ่อน (คีย์ API รหัสผ่าน)
เคล็ดลับสู่ความสำเร็จ
หัวข้อที่มีชื่อว่า “เคล็ดลับสู่ความสำเร็จ”สื่อสาร
หัวข้อที่มีชื่อว่า “สื่อสาร”- ถามคำถามในประเด็นก่อนเริ่มงาน
- ขอคำแนะนำเกี่ยวกับการเปลี่ยนแปลงที่ซับซ้อน
- อภิปรายแนวทางในคำอธิบาย PR
- ตอบสนองต่อข้อเสนอแนะทันที
ปฏิบัติตามมาตรฐาน
หัวข้อที่มีชื่อว่า “ปฏิบัติตามมาตรฐาน”- ทบทวนมาตรฐาน PHP
- ตรวจสอบแนวทางการรายงานปัญหา
- อ่านภาพรวมการมีส่วนร่วม
- ปฏิบัติตามแนวทางการขอดึง
เรียนรู้ Codebase
หัวข้อที่มีชื่อว่า “เรียนรู้ Codebase”- อ่านรูปแบบโค้ดที่มีอยู่
- ศึกษาการใช้งานที่คล้ายกัน
- เข้าใจสถาปัตยกรรม
- ตรวจสอบแนวคิดหลัก
เอกสารที่เกี่ยวข้อง
หัวข้อที่มีชื่อว่า “เอกสารที่เกี่ยวข้อง”- หลักจรรยาบรรณ
- แนวทางการขอดึง
- การรายงานปัญหา
- PHP มาตรฐานการเข้ารหัส
- ภาพรวมการมีส่วนร่วม
#xoops #git #github #contributing #workflow #pull-request