Hola, Pablo.
Como está escrito el post, no entra en el detalle de GIT, SVN u otros. Creo que se refiere al commit al repo, o sea al resto del equipo.
Personalmente en GIT hago los commits como si fuese para otra persona. El push para mi es sólo el momento de decir: comparto mis commits. Y prefiero hacerlos cuando llego al verde (antes Y después del refactoring).
Explico:
- nunca haría commit en rojo, porque como bien dijo César (y debemos estar todos de acuerdo, creo), no voy a dejar algo roto, ni romper el build.
- cuando llego al verde probé mi hipótesis, así que COMMIT (y explico lo nuevo que resolví)
- cuando refactorizo, si meto mucho la pata y me arrepiento, REVERT
- cuando refactoricé y quedó todo bien y en verde, COMMIT (y explico rápidamente el refactoring - porque lo quiero en el history)
Si es GIT lo hago lo mismo, porque para mi el repo es un medio de comunicación (el history es el canal, pero el código el contenido). Casualmente eso es una de las grandes ventajas de GIT para mi. Ese ciclo muy corto en SVN se me hacía lentísimo, además de que dependés de que la red ande fenómeno (cuando estás en una LAN no se nota tanto, pero por internet es durísimo).
¡Saludos!