Linee Guida Pull Request
Questo documento fornisce linee guida complete per inviare pull request ai progetti XOOPS. Seguire queste linee guida assicura revisioni di codice fluide e tempi di merge più veloci.
Prima di Creare una Pull Request
Sezione intitolata “Prima di Creare una Pull Request”Step 1: Controlla Problemi Esistenti
Sezione intitolata “Step 1: Controlla Problemi Esistenti”1. Visita il repository GitHub2. Vai alla tab Issues3. Cerca problemi esistenti correlati al tuo cambiamento4. Controlla sia problemi aperti che chiusiStep 2: Fork e Clone il Repository
Sezione intitolata “Step 2: Fork e Clone il Repository”# Fai fork del repository su GitHub# Clicca bottone "Fork" sulla pagina repository
# Clona il tuo forkgit clone https://github.com/YOUR_USERNAME/XOOPS.gitcd XOOPS
# Aggiungi remote upstreamgit remote add upstream https://github.com/XOOPS/XOOPS.git
# Verifica remotegit remote -v# Dovrebbe mostrare: origin (tuo fork) e upstream (ufficiale)Step 3: Crea Branch Feature
Sezione intitolata “Step 3: Crea Branch Feature”# Aggiorna main branchgit fetch upstreamgit checkout maingit merge upstream/main
# Crea branch feature# Usa nomi descrittivi: bugfix/issue-number o feature/descriptiongit checkout -b bugfix/123-fix-database-connectiongit checkout -b feature/add-psr-7-supportStep 4: Fai i Tuoi Cambiamenti
Sezione intitolata “Step 4: Fai i Tuoi Cambiamenti”# Fai cambiamenti ai tuoi file# Segui linee guida code style
# Stage cambiamentigit add .
# Commit con messaggio chiarogit commit -m "Fix database connection timeout issue"
# Crea multipli commit per cambiamenti logicigit commit -m "Add connection retry logic"git commit -m "Improve error messages for debugging"Standard Commit Message
Sezione intitolata “Standard Commit Message”Buoni Commit Message
Sezione intitolata “Buoni Commit Message”Usa messaggi chiari e descrittivi seguendo questi pattern:
# Formato<type>: <subject>
<body>
<footer>
# Esempio 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# Esempio 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 signatureCategorie Commit Type
Sezione intitolata “Categorie Commit Type”| Type | Descrizione | Esempio |
|---|---|---|
feat | Nuova funzionalità | feat: add user dashboard widget |
fix | Bug fix | fix: resolve cache invalidation bug |
docs | Documentazione | docs: update API reference |
style | Code style (no logic change) | style: format imports |
refactor | Code refactoring | refactor: simplify service layer |
perf | Performance improvement | perf: optimize database queries |
test | Test changes | test: add integration tests |
chore | Build/tooling changes | chore: update dependencies |
Descrizione Pull Request
Sezione intitolata “Descrizione Pull Request”Template PR
Sezione intitolata “Template PR”## DescrizioneDescrizione chiara di cambiamenti fatti e perché.
## Type di Cambiamento- [ ] Bug fix- [ ] Nuova funzionalità- [ ] Breaking change- [ ] Aggiornamento documentazione
## Problemi CorrelatiCloses #123Related to #456
## Cambiamenti Fatti- Cambiamento 1- Cambiamento 2- Cambiamento 3
## Testing- [ ] Testato localmente- [ ] Tutti i test passano- [ ] Aggiunto nuovi test- [ ] Step testing manuale inclusi
## Checklist- [ ] Codice segue linee guida style- [ ] Auto-review completata- [ ] Commenti aggiunti per logica complessa- [ ] Documentazione aggiornata- [ ] Nessun nuovo avviso generato- [ ] Aggiunti test per nuova funzionalità- [ ] Tutti i test passanoRequisiti Qualità Codice
Sezione intitolata “Requisiti Qualità Codice”Code Style
Sezione intitolata “Code Style”Segui linee guida Code-Style:
<?php// Buono: stile PSR-12namespace 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]); }}Requisiti Testing
Sezione intitolata “Requisiti Testing”Unit Test
Sezione intitolata “Unit Test”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); }}Esegui Test
Sezione intitolata “Esegui Test”# Esegui tutti i testvendor/bin/phpunit
# Esegui file test specificovendor/bin/phpunit tests/Feature/DatabaseConnectionTest.php
# Esegui con coveragevendor/bin/phpunit --coverage-html coverage/Lavorare con Branch
Sezione intitolata “Lavorare con Branch”Mantieni Branch Aggiornato
Sezione intitolata “Mantieni Branch Aggiornato”# Recupera ultimo da upstreamgit fetch upstream
# Rebase su main più recentegit rebase upstream/main
# Oppure merge se preferiscigit merge upstream/main
# Force push se rebasato (attenzione: solo su tuo branch!)git push -f origin bugfix/123-fix-database-connectionCreare la Pull Request
Sezione intitolata “Creare la Pull Request”Formato Titolo PR
Sezione intitolata “Formato Titolo PR”[Type] Descrizione breve (fix/feature/docs)
Esempi:- [FIX] Resolve database connection timeout issue (#123)- [FEATURE] Implement PSR-7 HTTP message interfaces- [DOCS] Update API reference for Criteria classProcesso Code Review
Sezione intitolata “Processo Code Review”Cosa Cercano i Reviewer
Sezione intitolata “Cosa Cercano i Reviewer”-
Correttezza
- Il codice risolve il problema dichiarato?
- I casi limite sono gestiti?
- La gestione errori è appropriata?
-
Qualità
- Segue gli standard di codifica?
- È mantenibile?
- È ben testato?
-
Performance
- Regressioni performance?
- Le query sono ottimizzate?
- L’utilizzo memoria è ragionevole?
-
Sicurezza
- Validazione input?
- Prevenzione SQL injection?
- Autenticazione/autorizzazione?
Rispondendo al Feedback
Sezione intitolata “Rispondendo al Feedback”# Affronta il feedback# Modifica file in base ai commenti di revisione
# Commit cambiamentigit commit -m "Address code review feedback
- Aggiungi gestione errore aggiuntiva- Migliora coverage test per casi limite- Aggiorna documentazione"
# Push cambiamentigit push origin bugfix/123-fix-database-connectionProblemi Comuni PR e Soluzioni
Sezione intitolata “Problemi Comuni PR e Soluzioni”Problema 1: PR è Troppo Grande
Sezione intitolata “Problema 1: PR è Troppo Grande”Problema: I reviewer non possono revisionare massicce PR efficacemente
Soluzione: Spezza in PR più piccole
- Prima PR: Cambiamenti principali
- Seconda PR: Test
- Terza PR: Documentazione
Problema 2: Nessun Test Incluso
Sezione intitolata “Problema 2: Nessun Test Incluso”Problema: I reviewer non possono verificare la funzionalità
Soluzione: Aggiungi test completi prima di inviare
Problema 3: Conflitti con Main
Sezione intitolata “Problema 3: Conflitti con Main”Problema: Il tuo branch è fuori sync con main
Soluzione: Rebase su main più recente
git fetch upstreamgit rebase upstream/maingit push -f origin your-branchDopo Merge
Sezione intitolata “Dopo Merge”Cleanup
Sezione intitolata “Cleanup”# Passa a maingit checkout main
# Aggiorna maingit pull upstream main
# Elimina local branchgit branch -d bugfix/123-fix-database-connection
# Elimina remote branchgit push origin --delete bugfix/123-fix-database-connectionRiassunto Best Practice
Sezione intitolata “Riassunto Best Practice”Da Fare
Sezione intitolata “Da Fare”- Crea commit message descrittivi
- Fai PR focalizzate, single-purpose
- Includi test per nuova funzionalità
- Aggiorna documentazione
- Riferisci problemi correlati
- Mantieni descrizioni PR chiare
- Rispondi prontamente alle revisioni
Da Non Fare
Sezione intitolata “Da Non Fare”- Includi cambiamenti non correlati
- Merge main nel tuo branch (usa rebase)
- Force push dopo che la revisione inizia
- Salta test
- Invia work in progress
- Ignora feedback code review
Documentazione Correlata
Sezione intitolata “Documentazione Correlata”- ../Contributing - Panoramica contribuzione
- Code-Style - Linee guida code style
- ../../03-Module-Development/Best-Practices/Testing - Best practice testing
- ../Architecture-Decisions/ADR-Index - Linee guida architettura
Risorse
Sezione intitolata “Risorse”Ultimo Aggiornamento: 2026-01-31 Applicabile a: Tutti i progetti XOOPS Repository: https://github.com/XOOPS/XOOPS