Le filiali dovrebbero funzionare correttamente, in base alla mia esperienza di utilizzo delle revisioni precedenti al commit precedenti.
Da notare, stavamo usando le revisioni pre-commit solo per le patch critiche per il codice candidato alla release di produzione, quindi non c'erano molti rami (le modifiche di routine venivano passate attraverso recensioni post-commit).
Poiché sembra che tu stia per utilizzare recensioni pre-commit per tutte le modifiche, potresti dover gestire una grande quantità di filiali. Se ti aspetti che lo sviluppatore effettui una modifica "revisionabile" a settimana, finirai per avere circa 50 filiali ogni anno per ogni sviluppatore del team. Se utilizzi blocchi di lavoro più piccoli, come quelli che richiedono 1, 2, 3 ... giorni, moltiplica 50 per 2, 3, 5 ... di conseguenza.
Di seguito sono riportate alcune altre considerazioni da tenere in considerazione se lo desideri modo migliore .
1. gestione dei casi in cui il codice di blocchi di riesame ritardato è necessario per gli altri membri del team
Stabilire, monitorare e risolvere i conflitti relativi alle scadenze di revisione del codice. Per il mio ricordo delle revisioni preliminari alle modifiche di routine trattate in uno dei progetti precedenti, la scadenza ragionevole è di circa 3 giorni e il tempo di iniziare a preoccuparsi è quando la revisione non viene completata più di 1 giorno dopo la presentazione.
Per confronto, nelle revisioni post-commit questi requisiti sono molto più rilassati (sto usando una scadenza di 2 settimane e inizio a preoccuparmi dopo 1 settimana) - ma dal momento che si targetizzano le recensioni pre-commit, probabilmente non è interessante .
2. unire conflitti quando si invia il codice revisionato
Che cosa fare se il commit per il codice revisionato è bloccato da modifiche in conflitto commesse da qualcun altro mentre il codice era in attesa di revisione?
Un paio di opzioni da considerare sono
- ritorna all'inizio e richiede agli sviluppatori di ri-implementare e riesaminare il cambiamento
In tal caso, potrebbe essere necessario affrontare un impatto negativo sul morale della squadra che questo (forse!) Avrà.
- passare la responsabilità di unirsi ad altri membri del team ("merge master")
In tal caso, dovrai anche decidere se le fusioni di per sé dovrebbero passare attraverso la revisione pre-commit o meno - e se sì, allora cosa fare nel caso in cui tale fusione a sua volta incontra un altro conflitto.
- ignora le modifiche apportate al codice revisionato nella fase di unione
In questo caso potresti dover affrontare un impatto negativo sul morale della squadra legato al fatto che il codice impegnato differisce da quello che è stato revisionato.
- inventare un modo per evitare conflitti
L'approccio diretto consiste nel consentire a uno sviluppatore di modificare uno specifico set di file, sebbene questo non ti protegga dal tipo di modifiche che non modificano direttamente i file, ma li impattano attraverso le modifiche interne all'API. Potresti anche scoprire che questo tipo di "blocco pessimistico" rende piuttosto problematici cambiamenti a livello di sistema e un profondo refactoring.
Per il confronto, non ci sarebbero problemi di questo tipo nelle revisioni post-commit (poiché trattano il codice che è già unito per definizione) - ma dal momento che scegli come target recensioni pre-commit, probabilmente non è interessante .
3. carica lo sviluppatore che è in attesa di revisione
Stabilisci una politica esplicita in base alla quale lo sviluppatore che ha inviato la recensione deve passare a una nuova attività o fare qualcos'altro (come ad es. il revisore della ricerca).
Per fare un confronto, le revisioni post-commit richiedono raramente una politica esplicita (dato che è naturale procedere all'attività successiva dopo aver eseguito il commit del codice e tenere conto della scadenza della revisione è di una o due settimane) - ma dal momento che si target commetti recensioni, probabilmente non è interessante.