Workflow Contribuzione
Questa guida ti porta attraverso il processo completo di contribuzione a XOOPS, dal setup iniziale alla pull request unita.
Prerequisiti
Sezione intitolata “Prerequisiti”Prima di iniziare a contribuire, assicurati di avere:
- Git installato e configurato
- Account GitHub (gratuito)
- PHP 7.4+ per sviluppo XOOPS
- Composer per gestione dipendenze
- Conoscenza base del workflow Git
- Familiarità con Codice di Condotta
Step 1: Fai Fork del Repository
Sezione intitolata “Step 1: Fai Fork del Repository”Su Interfaccia Web GitHub
Sezione intitolata “Su Interfaccia Web GitHub”- Naviga al repository (es.
XOOPS/XoopsCore27) - Clicca il bottone Fork nell’angolo in alto a destra
- Seleziona dove fare il fork (tuo account personale)
- Aspetta che il fork sia completato
Perché Fare Fork?
Sezione intitolata “Perché Fare Fork?”- Ottieni la tua copia su cui lavorare
- I manutentori non devono gestire molti branch
- Hai il controllo totale del tuo fork
- Le Pull Request riferiscono il tuo fork e il repository upstream
Step 2: Clona il Tuo Fork Localmente
Sezione intitolata “Step 2: Clona il Tuo Fork Localmente”# Clona il tuo fork (sostituisci YOUR_USERNAME)git clone https://github.com/YOUR_USERNAME/XoopsCore27.gitcd XoopsCore27
# Aggiungi remote upstream per tracciare il repository originalegit remote add upstream https://github.com/XOOPS/XoopsCore27.git
# Verifica che i remote siano impostati correttamentegit 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)Step 3: Configura Ambiente di Sviluppo
Sezione intitolata “Step 3: Configura Ambiente di Sviluppo”Installa Dipendenze
Sezione intitolata “Installa Dipendenze”# Installa dipendenze Composercomposer install
# Installa dipendenze di sviluppocomposer install --dev
# Per sviluppo modulocd modules/mymodulecomposer installConfigura Git
Sezione intitolata “Configura Git”# Imposta la tua identità Gitgit config user.name "Your Name"git config user.email "your.email@example.com"
# Opzionale: Imposta configurazione Git globalegit config --global user.name "Your Name"git config --global user.email "your.email@example.com"Esegui Test
Sezione intitolata “Esegui Test”# Assicurati che i test passano in stato pulito./vendor/bin/phpunit
# Esegui suite test specifica./vendor/bin/phpunit --testsuite unitStep 4: Crea Branch Feature
Sezione intitolata “Step 4: Crea Branch Feature”Convenzione Naming Branch
Sezione intitolata “Convenzione Naming Branch”Segui questo pattern: <type>/<description>
Tipi:
feature/- Nuova funzionalitàfix/- Bug fixdocs/- Solo documentazionerefactor/- Refactoring codicetest/- Aggiunte testchore/- Manutenzione, tooling
Esempi:
# Branch featuregit checkout -b feature/add-two-factor-auth
# Branch bug fixgit checkout -b fix/prevent-xss-in-forms
# Branch documentazionegit checkout -b docs/update-api-guide
# Sempre branchia da upstream/main (o develop)git checkout -b feature/my-feature upstream/mainMantieni Branch Aggiornato
Sezione intitolata “Mantieni Branch Aggiornato”# Prima di iniziare il lavoro, sincronizza con upstreamgit fetch upstreamgit merge upstream/main
# Dopo, se upstream è cambiatogit fetch upstreamgit rebase upstream/mainStep 5: Fai i Tuoi Cambiamenti
Sezione intitolata “Step 5: Fai i Tuoi Cambiamenti”Pratiche di Sviluppo
Sezione intitolata “Pratiche di Sviluppo”- Scrivi codice seguendo Standard PHP
- Scrivi test per nuova funzionalità
- Aggiorna documentazione se necessario
- Esegui linter e code formatter
Controlli Qualità Codice
Sezione intitolata “Controlli Qualità Codice”# Esegui tutti i test./vendor/bin/phpunit
# Esegui con coverage./vendor/bin/phpunit --coverage-html coverage/
# Esegui PHP CS Fixer./vendor/bin/php-cs-fixer fix --dry-run
# Esegui analisi statica PHPStan./vendor/bin/phpstan analyse class/ src/Commit Buoni Cambiamenti
Sezione intitolata “Commit Buoni Cambiamenti”# Controlla cosa hai cambiatogit statusgit diff
# Stage file specificigit add class/MyClass.phpgit add tests/MyClassTest.php
# O stage tutti i cambiamentigit add .
# Commit con messaggio descrittivogit commit -m "feat(auth): add two-factor authentication support"Step 6: Mantieni Branch in Sync
Sezione intitolata “Step 6: Mantieni Branch in Sync”Mentre lavori sulla tua feature, il main branch potrebbe avanzare:
# Recupera ultimi cambiamenti da upstreamgit fetch upstream
# Opzione A: Rebase (preferito per storia pulita)git rebase upstream/main
# Opzione B: Merge (più semplice ma aggiunge commit merge)git merge upstream/main
# Se si verificano conflitti, risolvili poi:git add .git rebase --continue # oppure git merge --continueStep 7: Push al Tuo Fork
Sezione intitolata “Step 7: Push al Tuo Fork”# Pushes il tuo branch al tuo forkgit push origin feature/my-feature
# Su push successivigit push
# Se hai rebasato, potresti aver bisogno di force push (usa con cautela!)git push --force-with-lease origin feature/my-featureStep 8: Crea Pull Request
Sezione intitolata “Step 8: Crea Pull Request”Su Interfaccia Web GitHub
Sezione intitolata “Su Interfaccia Web GitHub”- Vai al tuo fork su GitHub
- Vedrai una notifica per creare una PR dal tuo branch
- Clicca “Compare & pull request”
- Oppure clicca manualmente “New pull request” e seleziona il tuo branch
Titolo e Descrizione PR
Sezione intitolata “Titolo e Descrizione PR”Formato Titolo:
<type>(<scope>): <subject>Esempi:
feat(auth): add two-factor authenticationfix(forms): prevent XSS in text inputdocs: update installation guiderefactor(core): improve performanceTemplate Descrizione:
## DescrizioneBreve spiegazione di cosa fa questa PR.
## Cambiamenti- Cambiato X da A a B- Aggiunto feature Y- Corretto bug Z
## Type di Cambiamento- [ ] Nuova funzionalità (aggiunge nuova funzionalità)- [ ] Bug fix (corregge un problema)- [ ] Breaking change (cambiamento API/comportamento)- [ ] Aggiornamento documentazione
## Testing- [ ] Aggiunti test per nuova funzionalità- [ ] Tutti i test esistenti passano- [ ] Testing manuale eseguito
## Screenshot (se applicabile)Includi screenshot prima/dopo per cambiamenti UI.
## Problemi CorrelatiCloses #123Related to #456
## Checklist- [ ] Codice segue linee guida style- [ ] Auto-review del proprio codice- [ ] Aggiunto commento al codice complesso- [ ] Documentazione aggiornata- [ ] Nessun nuovo avviso generato- [ ] Test passano localmenteChecklist Revisione PR
Sezione intitolata “Checklist Revisione PR”Prima di inviare, assicurati:
- Codice segue Standard PHP
- Test inclusi e passano
- Documentazione aggiornata (se necessario)
- Nessun conflitto merge
- Commit message sono chiari
- Problemi correlati sono riferiti
- Descrizione PR è dettagliata
- Nessun codice debug o console.log
Step 9: Rispondi al Feedback
Sezione intitolata “Step 9: Rispondi al Feedback”Durante Code Review
Sezione intitolata “Durante Code Review”- Leggi i commenti attentamente - Comprendi il feedback
- Fai domande - Se poco chiaro, chiedi chiarimento
- Discuti alternative - Dibattiti rispettosamente gli approcci
- Fai i cambiamenti richiesti - Aggiorna il tuo branch
- Force-push i commit aggiornati - Se riscrivi la storia
# Fai cambiamentigit add .git commit --amend # Modifica ultimo commitgit push --force-with-lease origin feature/my-feature
# Oppure aggiungi nuovi commitgit commit -m "Address feedback on PR review"git push origin feature/my-featureAspettati Iterazione
Sezione intitolata “Aspettati Iterazione”- La maggior parte dei PR richiedono multipli round di revisione
- Sii paziente e costruttivo
- Vedi il feedback come opportunità di apprendimento
- I manutentori potrebbero suggerire refactor
Step 10: Merge e Cleanup
Sezione intitolata “Step 10: Merge e Cleanup”Dopo Approvazione
Sezione intitolata “Dopo Approvazione”Una volta che i manutentori approvano e uniscono:
- GitHub auto-merge o il manutentore clicca merge
- Il tuo branch è eliminato (solitamente automatico)
- I cambiamenti sono nel repository upstream
Local Cleanup
Sezione intitolata “Local Cleanup”# Passa al main branchgit checkout main
# Aggiorna main con cambiamenti unitigit fetch upstreamgit merge upstream/main
# Elimina local feature branchgit branch -d feature/my-feature
# Elimina dal tuo fork (se non eliminato automaticamente)git push origin --delete feature/my-featureWorkflow Diagram
Sezione intitolata “Workflow Diagram”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]Scenari Comuni
Sezione intitolata “Scenari Comuni”Sincronizza Prima di Iniziare
Sezione intitolata “Sincronizza Prima di Iniziare”# Inizia sempre frescogit fetch upstreamgit checkout -b feature/new-thing upstream/mainAggiungi Più Commit
Sezione intitolata “Aggiungi Più Commit”# Semplicemente pushes di nuovogit add .git commit -m "feat: additional changes"git push origin feature/new-thingCorreggi Errori
Sezione intitolata “Correggi Errori”# Ultimo commit ha messaggio sbagliatogit commit --amend -m "Correct message"git push --force-with-lease
# Revert a stato precedente (attenzione!)git reset --soft HEAD~1 # Mantieni cambiamentigit reset --hard HEAD~1 # Scarta cambiamentiGestisci Conflitti Merge
Sezione intitolata “Gestisci Conflitti Merge”# Rebase e risolvi conflittigit fetch upstreamgit rebase upstream/main
# Modifica file con conflitti per risolvere# Poi continuagit add .git rebase --continuegit push --force-with-leaseBest Practice
Sezione intitolata “Best Practice”Da Fare
Sezione intitolata “Da Fare”- Mantieni branch focalizzati su singoli problemi
- Fai piccoli, logici commit
- Scrivi commit message descrittivi
- Aggiorna il tuo branch frequentemente
- Testa prima di pushare
- Documenta cambiamenti
- Sii responsivo al feedback
Da Non Fare
Sezione intitolata “Da Non Fare”- Non lavorare direttamente su main/master branch
- Non mescolare cambiamenti non correlati in una PR
- Non commitare file generati o node_modules
- Non fare force push dopo che PR è pubblica (usa —force-with-lease)
- Non ignorare feedback code review
- Non creare PR massicce (spezza in più piccole)
- Non commitare dati sensibili (API key, password)
Consigli per il Successo
Sezione intitolata “Consigli per il Successo”Comunica
Sezione intitolata “Comunica”- Fai domande nei problemi prima di iniziare il lavoro
- Chiedi guida su cambiamenti complessi
- Discuti approccio nella descrizione PR
- Rispondi al feedback prontamente
Segui Standard
Sezione intitolata “Segui Standard”- Rivedi Standard PHP
- Controlla linee guida Issue Reporting
- Leggi Panoramica Contribuzione
- Segui Linee Guida Pull Request
Impara il Codebase
Sezione intitolata “Impara il Codebase”- Leggi il codice esistente
- Studia implementazioni simili
- Comprendi l’architettura
- Controlla Core Concept
Documentazione Correlata
Sezione intitolata “Documentazione Correlata”- Codice di Condotta
- Linee Guida Pull Request
- Segnalazione Problemi
- Standard Codifica PHP
- Panoramica Contribuzione
#xoops #git #github #contributing #workflow #pull-request