Si vous voulez savoir à quoi servent les validations atomiques, imaginez que vous fusionniez une branche dans le tronc de votre disque. Vous commencez le matin et après le déjeuner vous avez terminé, tout compile, et tous les tests unitaires se déroulent avec succès. Vous validez ensuite les 200+ fichiers modifiés lors de cette fusion.
Dans SVN, la validation réussit et tous les fichiers 200+ sont validés en une fois ou la validation échoue et aucune modification n'a été apportée au référentiel. (Il n'y a pas grand chose de plus à dire à ce sujet.)
Dans CVS, qui n'a pas de commits atomiques, il peut arriver que votre commit soit interrompu après 150 fichiers parce que Quelqu'un a trébuché sur votre câble réseau, les 50 fichiers restants n'ayant pas été validés, laissant le référentiel dans un état intermédiaire. Pendant que vous essayez de brancher votre câble réseau, un autre membre de votre équipe vérifie un autre ensemble de modifications. Cet ensemble de changements est disjoint de ceux que vous avez déjà enregistrés, donc la validation de l'autre personne réussit. Cependant, les changements sont incompatibles. Maintenant, l'équipe est bloquée avec un référentiel qui contient du code qui ne compile même pas, sans parler de tout test. Pire encore: vous avez tous les deux un manager d'équipe qui vous souffle le cou pour corriger ces changements aussi rapidement que possible afin que le reste de l'équipe puisse arrêter de jouer à Quake et se remettre au travail. Etonnamment, de tels scénarios ne sont pas aussi improbables que cela puisse paraître. J'y suis allé plusieurs fois et j'ai eu ma collection de chemises moche.
Considérez-vous chanceux de ne jamais avoir à utiliser CVS! –
Je me demande si les meilleures pratiques suggèrent toutes que bien que le commit lui-même soit toujours atomique, la raison de la validation peut ne pas être "atomique". Ces directives pourraient être par exemple: S'assurer que la construction ne se brise pas avant un commit. Emission d'une validation par correction de bogue. L'idée étant de minimiser la douleur si un rollback était nécessaire. –