Οδηγίες αιτήματος έλξης
Αυτό το έγγραφο παρέχει ολοκληρωμένες οδηγίες για την υποβολή αιτημάτων έλξης σε έργα XOOPS. Η τήρηση αυτών των οδηγιών διασφαλίζει ομαλούς ελέγχους κώδικα και ταχύτερους χρόνους συγχώνευσης.
Πριν δημιουργήσετε ένα αίτημα έλξης
Ενότητα με τίτλο «Πριν δημιουργήσετε ένα αίτημα έλξης»# Βήμα 1: Ελέγξτε για υπάρχοντα ζητήματα
Ενότητα με τίτλο «# Βήμα 1: Ελέγξτε για υπάρχοντα ζητήματα»1. Visit the GitHub repository2. Go to Issues tab3. Search for existing issues related to your change4. Check both open and closed issues# Βήμα 2: Διαχωρίστε και κλωνοποιήστε το αποθετήριο
Ενότητα με τίτλο «# Βήμα 2: Διαχωρίστε και κλωνοποιήστε το αποθετήριο»# Fork the repository on GitHub# Click "Fork" button on the repository page
# Clone your forkgit clone https://github.com/YOUR_USERNAME/XOOPS.gitcd XOOPS
# Add upstream remotegit remote add upstream https://github.com/XOOPS/XOOPS.git
# Verify remotesgit remote -v# Should show: origin (your fork) and upstream (official)# Βήμα 3: Δημιουργήστε έναν κλάδο λειτουργιών
Ενότητα με τίτλο «# Βήμα 3: Δημιουργήστε έναν κλάδο λειτουργιών»# Update main branchgit fetch upstreamgit checkout maingit merge upstream/main
# Create feature branch# Use descriptive names: bugfix/issue-number or feature/descriptiongit checkout -b bugfix/123-fix-database-connectiongit checkout -b feature/add-psr-7-support# Βήμα 4: Κάντε τις αλλαγές σας
Ενότητα με τίτλο «# Βήμα 4: Κάντε τις αλλαγές σας»# Make changes to your files# Follow code style guidelines
# Stage changesgit add .
# Commit with clear messagegit commit -m "Fix database connection timeout issue"
# Create multiple commits for logical changesgit commit -m "Add connection retry logic"git commit -m "Improve error messages for debugging"Πρότυπα δέσμευσης μηνυμάτων
Ενότητα με τίτλο «Πρότυπα δέσμευσης μηνυμάτων»# Μηνύματα καλής δέσμευσης
Ενότητα με τίτλο «# Μηνύματα καλής δέσμευσης»Χρησιμοποιήστε σαφή, περιγραφικά μηνύματα ακολουθώντας αυτά τα μοτίβα:
# Format<type>: <subject>
<body>
<footer>
# Example 1: Bug fixfix: resolve database connection timeout
Add exponential backoff retry mechanism to database connection.Connections now retry up to 3 times with increasing delays.
Fixes #123# Example 2: Featurefeat: implement PSR-7 HTTP message interfaces
Implement Psr\Http\Message interfaces for request/response handling.Provides type-safe HTTP message handling across the framework.
BREAKING CHANGE: Updated RequestHandler signature# Κατηγορίες τύπου δέσμευσης
Ενότητα με τίτλο «# Κατηγορίες τύπου δέσμευσης»| Τύπος | Περιγραφή | Παράδειγμα |
|---|---|---|
feat | Νέα δυνατότητα | feat: add user dashboard widget |
fix | Διόρθωση σφαλμάτων | fix: resolve cache invalidation bug |
docs | Τεκμηρίωση | docs: update API reference |
style | Στυλ κώδικα (χωρίς αλλαγή λογικής) | style: format imports |
refactor | Ανακατασκευή κώδικα | refactor: simplify service layer |
perf | Βελτίωση απόδοσης | perf: optimize database queries |
test | Αλλαγές δοκιμής | test: add integration tests |
chore | Build/tooling αλλαγές | chore: update dependencies |
Περιγραφή αιτήματος έλξης
Ενότητα με τίτλο «Περιγραφή αιτήματος έλξης»# Πρότυπο δημοσίων σχέσεων
Ενότητα με τίτλο «# Πρότυπο δημοσίων σχέσεων»## DescriptionClear description of changes made and why.
## Type of Change- [ ] Bug fix- [ ] New feature- [ ] Breaking change- [ ] Documentation update
## Related IssuesCloses #123Related to #456
## Changes Made- Change 1- Change 2- Change 3
## Testing- [ ] Tested locally- [ ] All tests pass- [ ] Added new tests- [ ] Manual testing steps included
## Checklist- [ ] Code follows style guidelines- [ ] Self-review completed- [ ] Comments added for complex logic- [ ] Documentation updated- [ ] No new warnings generated- [ ] Added tests for new functionality- [ ] All tests passingΑπαιτήσεις ποιότητας κώδικα
Ενότητα με τίτλο «Απαιτήσεις ποιότητας κώδικα»# Στυλ κώδικα
Ενότητα με τίτλο «# Στυλ κώδικα»Ακολουθήστε τις οδηγίες στυλ κώδικα:
<?php// Good: PSR-12 stylenamespace 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]); }}Απαιτήσεις δοκιμής
Ενότητα με τίτλο «Απαιτήσεις δοκιμής»# Δοκιμές μονάδων
Ενότητα με τίτλο «# Δοκιμές μονάδων»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); }}# Τρέξιμο τεστ
Ενότητα με τίτλο «# Τρέξιμο τεστ»# Run all testsvendor/bin/phpunit
# Run specific test filevendor/bin/phpunit tests/Feature/DatabaseConnectionTest.php
# Run with coveragevendor/bin/phpunit --coverage-html coverage/Εργασία με υποκαταστήματα
Ενότητα με τίτλο «Εργασία με υποκαταστήματα»# Διατήρηση του υποκαταστήματος ενημερωμένο
Ενότητα με τίτλο «# Διατήρηση του υποκαταστήματος ενημερωμένο»# Fetch latest from upstreamgit fetch upstream
# Rebase on latest maingit rebase upstream/main
# Or merge if you prefergit merge upstream/main
# Force push if rebased (warning: only on your branch!)git push -f origin bugfix/123-fix-database-connectionΔημιουργία του αιτήματος έλξης
Ενότητα με τίτλο «Δημιουργία του αιτήματος έλξης»# Μορφή Τίτλου PR
Ενότητα με τίτλο «# Μορφή Τίτλου PR»[Type] Short description (fix/feature/docs)
Examples:- [FIX] Resolve database connection timeout issue (#123)- [FEATURE] Implement PSR-7 HTTP message interfaces- [DOCS] Update API reference for Criteria classΔιαδικασία αναθεώρησης κώδικα
Ενότητα με τίτλο «Διαδικασία αναθεώρησης κώδικα»# Τι αναζητούν οι κριτικοί
Ενότητα με τίτλο «# Τι αναζητούν οι κριτικοί»-
Ορθότητα
- Επιλύει ο κωδικός το αναφερόμενο πρόβλημα;
- Γίνονται χειρισμοί ακραίων περιπτώσεων;
- Είναι κατάλληλος ο χειρισμός σφαλμάτων;
-
Ποιότητα
- Ακολουθεί πρότυπα κωδικοποίησης;
- Είναι διατηρήσιμο;
- Είναι καλά δοκιμασμένο;
-
Απόδοση
- Υπάρχουν παλινδρομήσεις απόδοσης;
- Είναι βελτιστοποιημένα τα ερωτήματα;
- Είναι λογική η χρήση μνήμης;
-
Ασφάλεια
- Επικύρωση εισόδου;
- SQL πρόληψη ένεσης;
- Authentication/authorization;
# Απάντηση στα σχόλια
Ενότητα με τίτλο «# Απάντηση στα σχόλια»# Address feedback# Edit files based on review comments
# Commit changesgit commit -m "Address code review feedback
- Add additional error handling- Improve test coverage for edge cases- Update documentation"
# Push changesgit push origin bugfix/123-fix-database-connectionΚοινά ζητήματα και λύσεις δημοσίων σχέσεων
Ενότητα με τίτλο «Κοινά ζητήματα και λύσεις δημοσίων σχέσεων»# Θέμα 1: Το PR είναι πολύ μεγάλο
Ενότητα με τίτλο «# Θέμα 1: Το PR είναι πολύ μεγάλο»Πρόβλημα: Οι αναθεωρητές δεν μπορούν να ελέγξουν αποτελεσματικά τις μαζικές PR
Λύση: Σπάστε σε μικρότερα PR
- Πρώτο PR: Βασικές αλλαγές
- Δεύτερο PR: Δοκιμές
- Τρίτο PR: Τεκμηρίωση
# Θέμα 2: Δεν περιλαμβάνονται τεστ
Ενότητα με τίτλο «# Θέμα 2: Δεν περιλαμβάνονται τεστ»Πρόβλημα: Οι αναθεωρητές δεν μπορούν να επαληθεύσουν τη λειτουργικότητα
**Λύση: ** Προσθέστε ολοκληρωμένες δοκιμές πριν από την υποβολή
# Θέμα 3: Συγκρούσεις με το Main
Ενότητα με τίτλο «# Θέμα 3: Συγκρούσεις με το Main»Πρόβλημα: Το υποκατάστημά σας δεν είναι συγχρονισμένο με το κύριο
Λύση: Επαναφορά στο πιο πρόσφατο main
git fetch upstreamgit rebase upstream/maingit push -f origin your-branchΜετά τη συγχώνευση
Ενότητα με τίτλο «Μετά τη συγχώνευση»# Καθαρισμός
Ενότητα με τίτλο «# Καθαρισμός»# Switch to maingit checkout main
# Update maingit pull upstream main
# Delete local branchgit branch -d bugfix/123-fix-database-connection
# Delete remote branchgit push origin --delete bugfix/123-fix-database-connectionΣύνοψη βέλτιστων πρακτικών
Ενότητα με τίτλο «Σύνοψη βέλτιστων πρακτικών»# Κάνετε
Ενότητα με τίτλο «# Κάνετε»- Δημιουργήστε περιγραφικά μηνύματα δέσμευσης
- Κάντε εστιασμένες, μονοσκοπικές δημόσιες σχέσεις
- Συμπεριλάβετε δοκιμές για νέα λειτουργικότητα
- Ενημέρωση τεκμηρίωσης
- Αναφορά σε θέματα
- Διατηρήστε σαφείς τις περιγραφές δημοσίων σχέσεων
- Απαντήστε αμέσως σε κριτικές
- Συμπεριλάβετε άσχετες αλλαγές
- Συγχώνευση main στο υποκατάστημά σας (χρησιμοποιήστε rebase)
- Αναγκαστική ώθηση μετά την έναρξη της αναθεώρησης
- Παράλειψη δοκιμών
- Υποβολή εργασιών σε εξέλιξη
- Αγνοήστε τα σχόλια αναθεώρησης κώδικα
Σχετική τεκμηρίωση
Ενότητα με τίτλο «Σχετική τεκμηρίωση»- ../Συμβολή - Επισκόπηση συνεισφοράς
- Code-Style - Οδηγίες στυλ κώδικα
- ../../03-Module-Development/Best-Practices/Testing - Δοκιμές βέλτιστων πρακτικών
- ../Architecture-Decisions/ADR-Index - Αρχιτεκτονικές κατευθυντήριες γραμμές
**Τελευταία ενημέρωση: ** 31-01-2026 Ισχύει για: Όλα τα έργα XOOPS Αποθετήριο: https://github.com/XOOPS/XOOPS