Non sono d'accordo con questa regola e sono d'accordo con ciò che Mason Wheeler ha detto. Vorrei
piace aggiungere alcune idee.
Cerco di impegnarmi ogni volta che ho un significato
cambia in commit: questo può essere più volte al giorno se risolvo diversi piccoli bug,
o una volta alla settimana se sto lavorando a un software più grande che non può essere
usato dal resto del codice in qualsiasi modo significativo fino a quando non raggiunge a
stato coerente.
Inoltre, interpreto impegnando come pubblicando una revisione significativa che
contribuisce con nuove funzionalità al codice base.
Penso che si dovrebbe provare a ripulire il codice prima di impegnarsi in questo modo
altri sviluppatori possono capire il significato e lo scopo del cambiamento
quando guardano la cronologia delle revisioni. Meno modifiche vengono apportate ad altri sviluppatori
vedere nella storia, meglio è: quando guardo la cronologia delle revisioni che voglio
per vedere incrementi che aggiungono alcune funzionalità significative; non mi interessa
in ogni piccola idea che ogni sviluppatore aveva e voleva provare prima di loro
raggiunto la soluzione.
Inoltre, non penso che sia una buona idea usare il server SVN
(o qualunque sistema di controllo della versione) come una funzione di backup a cui
viene eseguita l'istantanea corrente del codice (a condizione che venga compilato):
è possibile utilizzare una chiavetta USB o un'unità USB esterna o un disco di rete
per rispecchiare il codice corrente in modo che non si perda se il tuo
il computer si rompe. Controllo delle revisioni e backup dei dati sono due diversi
cose. Pubblicare una revisione non è lo stesso di salvare uno snapshot
del tuo codice.
Infine, penso che non dovrebbe essere un problema impegnarsi ogni ora
e poi (cioè solo quando uno è veramente soddisfatto dello stato attuale di
il codice) ed evitare conflitti di fusione non è una buona giustificazione
commettendo (anche) spesso.
Molti conflitti di fusione avvengono quando persone diverse lavorano sugli stessi file
allo stesso tempo, che è una cattiva pratica (vedi ad esempio questo articolo , punto
7).
I conflitti di unione dovrebbero essere ridotti dividendo un progetto in moduli con
interfacce chiare e meno dipendenze possibili e coordinando
il lavoro degli sviluppatori in modo che il codice su cui lavorano si sovrapponga il meno possibile
possibile.
Solo i miei 2 centesimi.
Modifica
Un altro motivo contro i commit prematuri che mi è venuto in mente è quello
una versione (molto) bacata non può essere testata. Se stai impegnando sul tronco
e il tuo team di test sta testando ogni giorno, potrebbero non avere alcuna versione verificabile
per alcune ore (o per un giorno). Anche se non provi a correggere il bug e
basta ripristinare le modifiche, una ricostruzione può richiedere un paio d'ore. Con, diciamo,
cinque tester che lavorano nel tuo team, hai sprecato 5 x 2 = 10 ore di
il tempo della squadra dovuto all'inattività. Mi è successo una volta, quindi ci provo davvero
per evitare commit prematuri nel nome di commit il prima possibile .