Au cours des dernières années, j'ai travaillé avec plusieurs systèmes de contrôle de version différents. Pour moi, l'une des différences fondamentales entre eux est de savoir s'ils versionnent les fichiers individuellement (chaque fichier a sa propre numérotation et historique de version) ou le référentiel dans son ensemble (un «commit» ou une version représente un instantané de l'ensemble du référentiel) .
Quelques systèmes de contrôle de version "par fichier":
- CVS
- ClearCase
- Visual SourceSafe
Quelques systèmes de contrôle de version "référentiel complet":
- SVN
- Git
- Mercuriel
D'après mon expérience, les systèmes de contrôle de version par fichier n'ont entraîné que des problèmes et nécessitent beaucoup plus de configuration et de maintenance pour être utilisés correctement (par exemple, "spécifications de configuration" dans ClearCase). J'ai eu de nombreux cas où un collègue modifiait un fichier non lié et cassait ce qui serait idéalement une ligne de développement isolée.
Quels sont les avantages de ces systèmes de contrôle de version par fichier? Quels sont les problèmes rencontrés par les systèmes de contrôle de version "référentiel complet" que les systèmes de contrôle de version par fichier n'ont pas?