J'aime penser à coder comme de l'escalade dans ce contexte. Vous montez un peu, puis vous mettez une ancre dans le rocher. Si jamais vous tombez, la dernière ancre que vous avez plantée est le point qui vous assure, vous ne tomberez donc jamais à plus de quelques mètres. Idem avec le contrôle de source; vous codez un peu et lorsque vous atteignez une position relativement stable, vous validez une révision. Si vous échouez horriblement, vous pouvez toujours revenir à la dernière révision et vous savez que celle-ci est stable.
Cela dit, si vous travaillez en équipe, il est de coutume de vous assurer que tout ce que vous commettez est complet, logique, construit proprement et ne casse pas le travail de quelqu'un d'autre. Si vous devez apporter des modifications plus importantes susceptibles d'interférer avec le travail des autres, créez une branche pour pouvoir commettre sans déranger personne.
Cela dépend également du système SCM que vous utilisez. Les systèmes distribués permettent généralement de fusionner et de forger sans douleur et rapidement, et vous pouvez vous engager localement; cela signifie que vous devez vous engager beaucoup et pousser / fusionner lorsque vous avez effectué un travail considérable. Avec les systèmes centralisés tels que svn ou cvs, s’engager coûte plus cher et affecte tout le monde. Le branchement résout partiellement ce problème, mais comme cela se produit sur le serveur, il peut être extrêmement lent et la fusion peut s'avérer fastidieuse. Ainsi, avec la gestion de la chaîne d'approvisionnement centralisée, il existe souvent une culture plus prudente dans laquelle vous ne vous engagez qu'une fois que vous avez effectué un travail considérable.
En ce qui concerne l'add-on: s'il vous plaît, s'il vous plaît ne faites pas cela. Les lignes de code, le nombre de commits, le nombre de bugs trouvés / résolus, etc., sont tous de très mauvaises mesures de qualité ou même de quantité.