Mi piace pensare alla programmazione come arrampicata su roccia in questo contesto. Ti arrampichi un po 'e poi metti un'ancora nella roccia. Se dovessi mai cadere, l'ultima ancora che hai piantato è il punto che ti protegge, quindi non cadrai mai più di qualche metro. Lo stesso con il controllo del codice sorgente; codice un po ', e quando raggiungi una posizione un po' stabile, commetti una revisione. Se dovessi mai fallire in modo orribile, puoi sempre tornare all'ultima revisione e sai che è stabile.
Detto questo, se lavori in una squadra, è consuetudine assicurarsi che tutto ciò che commetti sia completo, abbia senso, costruisca in modo pulito e non rompa le cose di qualcun altro. Se devi apportare cambiamenti più grandi che potrebbero interferire con il lavoro di altre persone, crea una succursale in modo da poterti impegnare senza disturbare nessun altro.
Dipende anche dal sistema SCM che stai utilizzando. I sistemi distribuiti in genere rendono la fusione e il biforcazione indolori e veloci e puoi impegnarti localmente; questo significa che dovresti impegnarti molto e spingere / unire quando hai svolto una notevole quantità di lavoro. Con sistemi centralizzati come svn o cvs, il commit è più costoso e riguarda tutti. La ramificazione risolve parzialmente questo problema, ma poiché si verifica sul server, può essere dolorosamente lento e l'unione può essere complicata. Quindi, con gli SCM centralizzati, c'è spesso una cultura più attenta, in cui ti impegni solo dopo aver svolto una notevole quantità di lavoro.
Per quanto riguarda il componente aggiuntivo: per favore, per favore non farlo. Le righe di codice, il numero di commit, il numero di bug trovati / risolti, ecc., Sono tutte misurazioni pessime di qualità o quantità pari.