modulo 05 / lezione 25
Collaborazione con remoti
Fork, pull request, collaborazione open source
Lavorare su progetti che non possiedi: fork, branch, PR, sincronizzazione con upstream.
Fork, pull request, collaborazione open source
Quando non hai permesso di pushare direttamente su un repository, lavori tramite fork. Il fork è una copia remota sotto il tuo account. Tu pushi lì, poi apri una pull request verso il repository originale.
È il workflow base dell’open source, ma torna utile anche in aziende con permessi separati.
Perché questa lezione conta
Contribuire a un progetto che non possiedi richiede attenzione: devi tenere il fork aggiornato, creare branch piccoli, rispettare linee guida e proporre PR facili da revieware.
Una buona PR non è solo codice corretto. È una modifica spiegata, limitata, testata e allineata al progetto.
Obiettivo operativo
Alla fine della lezione devi saper configurare origin e upstream, creare branch da upstream aggiornato, pushare sul fork e aprire PR pulite.
Setup fork-based
git clone git@github.com:tu/progetto.git
cd progetto
git remote add upstream git@github.com:org/progetto.git
git remote -v
Struttura:
origin -> tuo fork
upstream -> repo originale
Aggiornare:
git fetch upstream
git switch main
git rebase upstream/main
git push origin main
Se preferisci non riscrivere main del fork, puoi fare merge. La cosa importante è sapere quale scelta fai.
Branch per contributo
Non lavorare direttamente su main del fork. Crea branch:
git switch -c fix/typo-readme upstream/main
Così il branch parte dalla base aggiornata del progetto originale.
Poi:
git push -u origin fix/typo-readme
Apri PR da tu:fix/typo-readme verso org:main.
PR piccola
Una PR open source efficace ha:
- scope stretto;
- titolo chiaro;
- descrizione del problema;
- soluzione proposta;
- test eseguiti;
- screenshot se UI;
- link a issue se esiste;
- nessun refactor laterale.
Se vuoi correggere typo e refactorare architettura, apri due PR.
Tenere aggiornata una PR
Se upstream cambia:
git fetch upstream
git switch fix/typo-readme
git rebase upstream/main
git push --force-with-lease
Force-with-lease è accettabile sul tuo branch del fork. Se il progetto preferisce merge commit, segui la guida di contributing.
Leggere le regole del progetto
Prima di contribuire:
CONTRIBUTING.md;- issue template;
- stile commit;
- test richiesti;
- licenza;
- codice di condotta;
- branch target.
Molte PR vengono rallentate perché ignorano istruzioni già scritte.
Gestire feedback di review
Quando arriva feedback, evita di mescolare tutto in un unico commit confuso. Se il progetto preferisce storia pulita, puoi fare commit temporanei durante la review e poi squashare o rebaseare prima del merge. Se invece il progetto mantiene i commit, ogni correzione deve restare leggibile.
Rispondi ai commenti indicando cosa hai cambiato e dove. Una buona collaborazione open source è anche asincrona: il maintainer deve capire lo stato della PR senza ricostruire tutto dal diff.
Laboratorio guidato
Usa un tuo repo sandbox come se fosse open source:
- crea repo originale;
- crea fork simulato o secondo clone;
- configura
origineupstream; - crea branch da upstream;
- fai modifica minima;
- push su origin;
- scrivi descrizione PR completa.
Non serve disturbare un progetto reale per imparare il flusso.
Output atteso
Un playbook fork:
clone fork
add upstream
fetch upstream
branch da upstream/main
commit piccolo
push origin branch
PR con descrizione e test
rebase su upstream se richiesto
Errori comuni
Lavorare su main del fork. Rende difficile gestire più PR.
PR troppo grande. Riduce probabilità di review rapida.
Non leggere CONTRIBUTING. Porta a cicli inutili.
Dimenticare upstream. Il fork resta indietro e le PR divergono.
Checklist di verifica
- so distinguere origin e upstream;
- creo branch da upstream aggiornato;
- push sul mio fork;
- PR ha scope e test chiari;
- so aggiornare la PR con rebase e force-with-lease.
Collegamenti
- Modulo: Collaborazione con remoti — lezione 25 del corso.
- Il modulo 6 applica questi concetti ai workflow di team.