Ροή εργασιών συνεισφοράς
Αυτός ο οδηγός σας καθοδηγεί στην πλήρη διαδικασία συνεισφοράς στο XOOPS, από την αρχική ρύθμιση έως το αίτημα συγχώνευσης έλξης.
Προαπαιτούμενα
Ενότητα με τίτλο «Προαπαιτούμενα»Πριν ξεκινήσετε να συνεισφέρετε, βεβαιωθείτε ότι έχετε:
- Εγκαταστάθηκε και διαμορφώθηκε το Git
- Λογαριασμός GitHub (δωρεάν)
- PHP 7.4+ για ανάπτυξη XOOPS
- Συνθέτης για διαχείριση εξαρτήσεων
- Βασικές γνώσεις Git workflows
- Εξοικείωση με τον Κώδικα Δεοντολογίας
Βήμα 1: Διαχωρίστε το αποθετήριο
Ενότητα με τίτλο «Βήμα 1: Διαχωρίστε το αποθετήριο»# Στη διεπαφή ιστού GitHub
Ενότητα με τίτλο «# Στη διεπαφή ιστού GitHub»- Μεταβείτε στο αποθετήριο (π.χ.
XOOPS/XoopsCore27) - Κάντε κλικ στο κουμπί Fork στην επάνω δεξιά γωνία
- Επιλέξτε πού θα διαχωρίσετε (τον προσωπικό σας λογαριασμό)
- Περιμένετε να ολοκληρωθεί το πιρούνι
# Γιατί Fork;
Ενότητα με τίτλο «# Γιατί Fork;»- Παίρνετε το δικό σας αντίγραφο για να εργαστείτε
- Οι συντηρητές δεν χρειάζεται να διαχειρίζονται πολλά υποκαταστήματα
- Έχετε τον πλήρη έλεγχο του πιρουνιού σας
- Τα αιτήματα έλξης αναφέρονται στο πιρούνι σας και στο αποθετήριο ανάντη
Βήμα 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: Διατήρηση του Branch σε συγχρονισμό
Ενότητα με τίτλο «Βήμα 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: Σπρώξτε στο πιρούνι σας
Ενότητα με τίτλο «Βήμα 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 από το υποκατάστημά σας
- Κάντε κλικ στο “Αίτημα σύγκρισης και έλξης”
- Ή κάντε χειροκίνητα κλικ “Νέο αίτημα έλξης” και επιλέξτε το υποκατάστημά σας
# Τίτλος δημοσίων σχέσεων και περιγραφή
Ενότητα με τίτλο «# Τίτλος δημοσίων σχέσεων και περιγραφή»Μορφή τίτλου:
<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# Λίστα ελέγχου αναθεώρησης δημοσίων σχέσεων
Ενότητα με τίτλο «# Λίστα ελέγχου αναθεώρησης δημοσίων σχέσεων»Πριν την υποβολή, βεβαιωθείτε:
- Ο κωδικός ακολουθεί τα πρότυπα PHP
- Περιλαμβάνονται εξετάσεις και περνούν
- Ενημερώθηκε η τεκμηρίωση (εάν χρειάζεται)
- Δεν υπάρχουν διενέξεις συγχώνευσης
- Τα μηνύματα δέσμευσης είναι σαφή
- Αναφέρονται σχετικά θέματα
- Η περιγραφή PR είναι λεπτομερής
- Δεν υπάρχουν αρχεία καταγραφής κώδικα εντοπισμού σφαλμάτων ή κονσόλας
Βήμα 9: Απαντήστε στα σχόλια
Ενότητα με τίτλο «Βήμα 9: Απαντήστε στα σχόλια»# Κατά την αναθεώρηση κώδικα
Ενότητα με τίτλο «# Κατά την αναθεώρηση κώδικα»- Διαβάστε τα σχόλια προσεκτικά - Κατανοήστε τα σχόλια
- Κάντε ερωτήσεις - Εάν είναι ασαφές, ζητήστε διευκρινίσεις
- Συζητήστε εναλλακτικές λύσεις - Συζητήστε προσεγγίσεις με σεβασμό
- Πραγματοποιήστε τις ζητούμενες αλλαγές - Ενημερώστε το υποκατάστημά σας
- Αναγκαστική ώθηση ενημερωμένες δεσμεύσεις - Εάν γίνεται επανεγγραφή του ιστορικού
# 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Διάγραμμα ροής εργασίας
Ενότητα με τίτλο «Διάγραμμα ροής εργασίας»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]Συνηθισμένα σενάρια
Ενότητα με τίτλο «Συνηθισμένα σενάρια»# Συγχρονισμός πριν από την έναρξη
Ενότητα με τίτλο «# Συγχρονισμός πριν από την έναρξη»# 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Βέλτιστες πρακτικές
Ενότητα με τίτλο «Βέλτιστες πρακτικές»# Κάνετε
Ενότητα με τίτλο «# Κάνετε»- Διατηρήστε τα υποκαταστήματα εστιασμένα σε μεμονωμένα θέματα
- Κάντε μικρές, λογικές δεσμεύσεις
- Γράψτε περιγραφικά μηνύματα δέσμευσης
- Ενημερώνετε συχνά το υποκατάστημά σας
- Δοκιμάστε πριν πιέσετε
- Αλλαγές εγγράφων
- Να ανταποκρίνεστε στα σχόλια
- Εργαστείτε απευθείας στο υποκατάστημα main/master
- Αναμείξτε άσχετες αλλαγές σε ένα PR
- Δέσμευση δημιουργημένων αρχείων ή node_modules
- Αναγκαστική ώθηση μετά τη δημοσιοποίηση του PR (χρήση —force-with-lease)
- Αγνοήστε τα σχόλια αναθεώρησης κώδικα
- Δημιουργήστε τεράστια PR (σπάστε σε μικρότερα)
- Δέσμευση ευαίσθητων δεδομένων (API κλειδιά, κωδικοί πρόσβασης)
Συμβουλές για επιτυχία
Ενότητα με τίτλο «Συμβουλές για επιτυχία»# Επικοινωνήστε
Ενότητα με τίτλο «# Επικοινωνήστε»- Κάντε ερωτήσεις σε θέματα πριν ξεκινήσετε την εργασία
- Ζητήστε καθοδήγηση σχετικά με σύνθετες αλλαγές
- Συζητήστε την προσέγγιση στην περιγραφή δημοσίων σχέσεων
- Απαντήστε αμέσως στα σχόλια
# Ακολουθήστε τα πρότυπα
Ενότητα με τίτλο «# Ακολουθήστε τα πρότυπα»- Αναθεωρήστε τα πρότυπα PHP
- Ελέγξτε τις οδηγίες αναφοράς ζητημάτων
- Διαβάστε την Επισκόπηση Συνεισφοράς
- Ακολουθήστε τις κατευθυντήριες οδηγίες για το αίτημα έλξης
# Μάθετε τη βάση κώδικα
Ενότητα με τίτλο «# Μάθετε τη βάση κώδικα»- Διαβάστε τα υπάρχοντα μοτίβα κώδικα
- Μελετήστε παρόμοιες υλοποιήσεις
- Κατανοήστε την αρχιτεκτονική
- Ελέγξτε τις βασικές έννοιες
Σχετική τεκμηρίωση
Ενότητα με τίτλο «Σχετική τεκμηρίωση»- Κώδικας Δεοντολογίας
- Οδηγίες αιτήματος έλξης
- Αναφορά ζητημάτων
- PHP Πρότυπα κωδικοποίησης
- Συνεισφορά Επισκόπηση