Me gusta pensar en la codificación como escalada en este contexto. Subes un poco y luego pones un ancla en la roca. Si alguna vez se cae, el último ancla que plantó es el punto que lo asegura, por lo que nunca caerá más de unos pocos metros. Lo mismo con el control de fuente; codifica un poco, y cuando alcanza una posición algo estable, confirma una revisión. Si alguna vez fallas horriblemente, siempre puedes volver a esa última revisión, y sabes que es estable.
Dicho esto, si trabaja en un equipo, es costumbre asegurarse de que todo lo que comete sea completo, tenga sentido, se construya de manera limpia y no rompa las cosas de nadie más. Si necesita hacer cambios más grandes que puedan interferir con el trabajo de otras personas, haga una rama para que pueda comprometerse sin molestar a nadie más.
También depende del sistema SCM que esté utilizando. Los sistemas distribuidos generalmente hacen que la fusión y la bifurcación sean indoloras y rápidas, y puede comprometerse localmente; Esto significa que debe comprometerse mucho e impulsar / fusionar cuando haya realizado una cantidad considerable de trabajo. Con sistemas centralizados como svn o cvs, el compromiso es más costoso y afecta a todos. La ramificación resuelve parcialmente este problema, pero debido a que ocurre en el servidor, puede ser muy lento y la fusión puede ser engorrosa. Entonces, con los SCM centralizados, a menudo hay una cultura más cuidadosa, donde solo se compromete una vez que ha realizado una cantidad significativa de trabajo.
En cuanto al complemento: por favor, no hagas eso. Las líneas de código, el número de confirmaciones, el número de errores encontrados / resueltos, etc., son medidas muy malas de calidad o incluso cantidad.