Non sono d'accordo con questa regola e sono d'accordo con quanto affermato da Mason Wheeler . Vorrei aggiungere alcune idee.
Cerco di impegnarmi ogni volta che ho una modifica significativa da impegnare: questo può essere più volte al giorno se correggo diversi piccoli bug, o una volta alla settimana se sto lavorando su un software più grande che non può essere utilizzato dal resto di il codice in qualsiasi modo significativo fino a quando non raggiunge uno stato coerente.
Inoltre, interpreto il commit come pubblicazione di una revisione significativa che contribuisce con nuove funzionalità alla base di codice. Penso che si dovrebbe provare a ripulire il codice prima di impegnarsi in modo che altri sviluppatori possano capire il significato e lo scopo del cambiamento quando guardano la cronologia delle revisioni. Meno cambiamenti vedono altri sviluppatori nella storia, meglio è: quando guardo la cronologia delle revisioni voglio vedere incrementi che aggiungono alcune funzionalità significative; Non mi interessa ogni piccola idea che ogni sviluppatore aveva e voleva provare prima di raggiungere la soluzione.
Inoltre, non credo sia una buona idea usare il server SVN (o qualunque sistema di controllo versione) come una funzione di backup in cui è impegnata l'istantanea corrente del codice (a condizione che sia compilata): è possibile utilizzare una chiavetta USB o un'unità USB esterna o un disco di rete per eseguire il mirroring del codice corrente in modo da non perderlo in caso di guasto del computer. Controllo delle revisioni e backup dei dati sono due cose diverse. La pubblicazione di una revisione non equivale a salvare un'istantanea
del codice.
Infine, penso che non dovrebbe essere un problema impegnarsi di tanto in tanto (cioè solo quando si è veramente soddisfatti dello stato attuale del codice) ed evitare conflitti di unione non è una buona giustificazione per impegnarsi (troppo) spesso. Molti conflitti di unione si verificano quando persone diverse lavorano contemporaneamente sugli stessi file, il che è una cattiva pratica (vedere ad esempio questo articolo , punto 7). Unire i conflitti dovrebbe essere ridotto suddividendo un progetto in moduli con interfacce chiare e il minor numero possibile di dipendenze e coordinando il lavoro degli sviluppatori in modo che il codice su cui lavorano si sovrapponga il meno possibile.
Solo i miei 2 centesimi.
MODIFICARE
Un altro motivo per cui mi è venuto in mente un impegno prematuro è che una versione (molto) buggy non può essere testata. Se stai impegnando sul bagagliaio e il tuo team di test sta eseguendo test ogni giorno, potrebbero non avere una versione testabile per alcune ore (o per un giorno). Anche se non provi a correggere il bug e ripristini le modifiche, una ricostruzione può richiedere un paio d'ore. Con, diciamo, cinque tester che lavorano nella tua squadra, hai perso 5 x 2 = 10 ore di tempo della squadra a causa dell'inattività. Mi è successo una volta, quindi cerco davvero di evitare il più presto possibile i commit prematuri in nome del commit .