Protezione dei Branch Remoti in Git
Proteggere i branch remoti in Git è una pratica essenziale per mantenere la stabilità del codice e prevenire modifiche indesiderate o accidentali nei branch critici, come main
o develop
. Configurare correttamente le protezioni dei branch garantisce che solo le modifiche revisionate e approvate possano essere integrate, riducendo il rischio di bug o regressioni. In questa guida, esploreremo come implementare la protezione dei branch remoti su piattaforme come GitHub, GitLab e Bitbucket.
Perché Proteggere i Branch Remoti?
Proteggere i branch remoti è fondamentale per:
- Prevenire errori accidentali: Evita che i membri del team possano eseguire il push di modifiche non revisionate o non testate nei branch principali.
- Mantenere la qualità del codice: Richiedere revisioni obbligatorie e passaggi attraverso pipeline CI/CD assicura che solo il codice di alta qualità venga integrato.
- Assicurare la coerenza del progetto: Blocca l’eliminazione accidentale di branch critici o modifiche non intenzionali.
Configurare Branch Protetti su GitHub
GitHub offre strumenti potenti per proteggere i branch remoti, permettendo di configurare regole specifiche per uno o più branch.
1. Abilitare la Protezione dei Branch
- Vai al repository su GitHub e clicca su “Settings” (Impostazioni).
- Nella sezione “Branches”, troverai un’opzione chiamata “Branch protection rules” (Regole di protezione dei branch).
- Clicca su “Add rule” (Aggiungi regola).
2. Configurare le Regole di Protezione
Puoi configurare diverse regole per proteggere i branch:
- Branch name pattern: Specifica il branch o i branch che desideri proteggere (ad esempio
main
orelease/*
per proteggere tutti i branch di rilascio). - Require pull request reviews before merging: Richiedi che tutte le pull request verso il branch protetto siano revisionate e approvate prima di essere unite.
- Require status checks to pass before merging: Assicura che tutte le verifiche di stato (come test automatizzati) passino con successo prima di permettere il merge.
- Include administrators: Applica le regole di protezione anche agli amministratori del repository.
3. Abilitare il Controllo per i Commits Diretti
Per evitare che qualcuno faccia il push diretto al branch protetto, seleziona l’opzione:
- Require linear history: Questo richiede che tutti i commit su un branch protetto siano eseguiti attraverso pull request, impedendo i merge non lineari (ad esempio, i merge con commit di merge).
4. Prevenire la Cancellazione del Branch
Puoi anche impedire la cancellazione accidentale di branch critici:
- Protect matching branches: Abilita questa opzione per impedire la cancellazione del branch protetto.
5. Salvare le Impostazioni
Dopo aver configurato le regole, clicca su “Create” o “Save changes” per applicare le protezioni al branch.
Configurare Branch Protetti su GitLab
Su GitLab, puoi proteggere i branch in modo simile, con la possibilità di configurare permessi e restrizioni specifiche.
1. Accedere alle Impostazioni del Branch
- Vai al repository su GitLab e clicca su “Settings” (Impostazioni).
- Sotto “Repository”, trova la sezione “Protected branches” (Branch protetti).
2. Aggiungere un Branch Protetto
- Seleziona “Protect a branch” per aggiungere una nuova protezione.
- Scegli il branch che desideri proteggere (ad esempio,
main
orelease
).
3. Configurare i Permessi
Puoi definire chi ha il permesso di eseguire determinate azioni sui branch protetti:
- Allowed to merge: Specifica chi può unire le pull request nel branch protetto.
- Allowed to push: Definisci chi può eseguire il push diretto al branch protetto (di solito limitato agli amministratori o a nessuno).
- Allowed to create: Indica chi può creare il branch protetto.
4. Forzare la Revisione delle Merge Requests
Su GitLab, puoi richiedere che tutte le merge requests verso branch protetti siano revisionate e approvate prima di essere unite. Questa impostazione si trova sotto “Settings” > “General” > “Merge request approvals”.
5. Salvare le Modifiche
Una volta configurati i permessi e le protezioni, clicca su “Save changes” per applicare le impostazioni.
Configurare Branch Protetti su Bitbucket
Bitbucket offre anche funzionalità per proteggere i branch e gestire le politiche di commit e merge.
1. Accedere alle Impostazioni dei Branch
- Vai al repository su Bitbucket e clicca su “Repository settings” (Impostazioni del repository).
- Trova la sezione “Branch permissions” (Permessi dei branch).
2. Configurare le Regole di Protezione
Aggiungi regole per proteggere i branch:
- Branch name pattern: Specifica il nome del branch o un pattern (ad esempio
main
,develop
, orelease/*
). - Restrict push: Limita chi può eseguire il push al branch protetto.
- Require pull request: Richiedi che tutte le modifiche al branch protetto avvengano tramite pull request.
3. Richiedere Build e Approvals
Su Bitbucket, puoi configurare la pipeline CI/CD per richiedere che le build siano completate con successo prima di permettere il merge, e puoi anche richiedere che un certo numero di approvazioni sia necessario.
4. Salvare le Impostazioni
Dopo aver configurato le regole e i permessi, clicca su “Save” per applicare le modifiche.
Best Practices per la Protezione dei Branch
- Proteggi i Branch Principali: Sempre proteggi branch come
main
,master
,develop
, e quelli destinati ai rilasci per garantire che il codice sia stabile e revisionato. - Richiedi Revisioni Obbligatorie: Assicurati che tutte le pull request verso branch protetti siano revisionate e approvate prima di essere unite.
- Integra Test Automatizzati: Usa la CI/CD per eseguire test su ogni pull request e richiedi che tutti i test passino prima di permettere il merge.
- Documenta le Politiche di Protezione: Includi le regole di protezione dei branch nelle guide di contribuzione del progetto per informare tutti i membri del team delle politiche in vigore.
Risolvere Problemi Comuni
Push Bloccato al Branch Protetto
Se un push viene bloccato, verifica le regole di protezione configurate e assicurati che stai seguendo le procedure corrette, come l’invio di una pull request anziché eseguire un push diretto.
Impossibilità di Unire una Pull Request
Se una pull request non può essere unita, verifica che tutte le condizioni siano soddisfatte (ad esempio, tutte le revisioni e i controlli di stato devono essere completati e approvati).
Problemi di Permessi
Assicurati che i permessi siano configurati correttamente, con i giusti ruoli assegnati ai membri del team. Controlla che non ci siano conflitti tra le regole di protezione e i permessi assegnati.
Conclusione
Proteggere i branch remoti in Git è una pratica essenziale per mantenere la stabilità del progetto, garantire che solo il codice di alta qualità venga integrato e prevenire modifiche accidentali o indesiderate. Configurando correttamente le protezioni dei branch su piattaforme come GitHub, GitLab e Bitbucket, puoi implementare un processo di sviluppo più sicuro e collaborativo, proteggendo i branch critici e migliorando la qualità del codice nel tempo.