Je ne suis pas d'accord avec cette règle et je souscris à ce qu'a dit Mason Wheeler . Je voudrais ajouter quelques idées.
J'essaie de m'engager à chaque changement significatif: cela peut être plusieurs fois par jour si je corrige plusieurs petits bugs, ou une fois par semaine si je travaille sur un logiciel plus volumineux qui ne peut pas être utilisé par le reste du monde. le code de manière significative jusqu'à ce qu'il atteigne un état cohérent.
En outre, j'interprète committing comme la publication d'une révision significative qui apporte de nouvelles fonctionnalités à la base de code. Je pense que l’on devrait essayer de nettoyer le code avant de s’engager afin que les autres développeurs puissent comprendre le sens et le but du changement quand ils consultent l’historique des révisions. Moins il y a de changements dans l'historique des autres développeurs, mieux c'est: quand je regarde l'historique des révisions, je veux voir les incréments qui ajoutent des fonctionnalités significatives; Je ne suis pas intéressé par toutes les petites idées que chaque développeur avait et voulait tester avant de parvenir à la solution.
De plus, je ne pense pas que ce soit une bonne idée d'utiliser le serveur SVN (ou tout système de contrôle de version) comme une installation de sauvegarde sur laquelle l'instantané actuel du code est validé (à condition qu'il soit compilé): vous pouvez utiliser une clé USB ou un lecteur USB externe ou un disque réseau pour refléter votre code actuel afin qu'il ne soit pas perdu si votre ordinateur tombe en panne. Le contrôle des révisions et la sauvegarde des données sont deux choses différentes. La publication d'une révision n'est pas la même chose que l' enregistrement d'un instantané
de votre code.
Enfin, je pense qu’il ne devrait pas être problématique de s’engager de temps en temps (c’est-à-dire uniquement lorsque l’on est vraiment satisfait de l’état actuel du code) et qu’éviter les conflits de fusion n’est pas une bonne justification pour commettre (trop) souvent. De nombreux conflits de fusion se produisent lorsque différentes personnes travaillent sur les mêmes fichiers en même temps, ce qui est une mauvaise pratique (voir par exemple le présent article , point 7). Les conflits de fusion doivent être réduits en scindant un projet en modules avec des interfaces claires et le moins de dépendances possibles, et en coordonnant le travail des développeurs afin que le code sur lequel ils travaillent se chevauche le moins possible.
Juste mes 2 cents.
MODIFIER
Une autre raison contre les commissions prématurées qui m'est venue à l'esprit est qu'une version (très) boguée ne peut pas être testée. Si vous vous engagez dans le coffre et que votre équipe de test teste tous les jours, il est possible qu’elle n’ait pas de version testable pendant quelques heures (ou un jour). Même si vous n'essayez pas de corriger le bogue et de simplement annuler vos modifications, une reconstruction peut prendre quelques heures. Avec, par exemple, cinq testeurs travaillant dans votre équipe, vous avez perdu 5 x 2 = 10 heures de temps par équipe en raison de l'inactivité. C'est ce qui m'est arrivé une fois, alors j'essaie vraiment d'éviter les commits prématurés au nom de commit le plus tôt possible .