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 anclaje que plantó es el punto que lo protege, por lo que nunca caerá más de unos pocos metros. Lo mismo con el control de la fuente; se codifica un poco y, cuando se alcanza una posición estable, se realiza una revisión. Si alguna vez fracasas horriblemente, siempre puedes volver a la última revisión y sabes que es estable.
Dicho esto, si trabajas en un equipo, es habitual asegurarte de que todo lo que cometas sea completo, tenga sentido, se desarrolle de manera limpia y no rompa las cosas de los demás. Si necesita realizar cambios más grandes que puedan interferir con el trabajo de otras personas, cree una sucursal para que pueda comprometerse sin molestar a nadie más.
También depende del sistema SCM que estés usando. Los sistemas distribuidos por lo general hacen que la combinación y el forking sean indoloros y rápidos, y puede comprometerse localmente; esto significa que debe comprometerse mucho y presionar / fusionar cuando haya realizado una cantidad sustancial de trabajo. Con sistemas centralizados como svn o cvs, comprometerse es más costoso y afecta a todos. La bifurcación resuelve parcialmente este problema, pero como ocurre en el servidor, puede ser muy lento y la combinación puede ser complicada. Así que con los SCM centralizados, a menudo hay una cultura más cuidadosa, en la que 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 todas muy malas mediciones de calidad o incluso cantidad.