Dipende dal tuo VCS e dalle sue capacità, in particolare si fondono. Come indicato da @MadKeithV, se usi GIT o Mecurial, usando cloni locali, commetti in anticipo e spesso. Se utilizzi dinasour come CVS e SVN come repo principale, allora meno spesso può essere un vantaggio e prendere in considerazione le sostituzioni.
Ci sono buone ragioni per usare GIT localmente e consegnare fino a un repository centrale (può essere GIT / CVS / SVN o quasi tutto ciò che vuoi) in tempi appropriati. Ancora meglio, alcuni sviluppatori possono adottare questa pratica e non dover forzarla su quelli che non la vogliono.
Gli sviluppatori dovrebbero avere voce in capitolo e lo schema deve essere flessibile. Abbiamo una regola, nessun codice rotto. Il codice incompleto è OK, ma deve "fallire" in modo ovvio (cioè il test dell'unità non sta passando) e chiaramente essere incompleto - i commit a metà forno sono pericolosi.
Deve funzionare per la squadra, e ogni squadra è diversa.