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?
la source
Réponses:
D'après mon expérience, il n'y en a pas: le VCS "à référentiel entier" domine strictement le VCS "par fichier".
la source
Chaque fichier présente un avantage lorsque vous créez des lignes de produits (plusieurs produits logiciels) à partir du même référentiel.
Certains environnements de contrat client nécessitent la preuve que leur code drop contient UNIQUEMENT les modifications souhaitées, et non d'autres modifications. C'est assez facile si les numéros de version des fichiers sont toujours les mêmes.
Et ce n'est pas un exemple aléatoire que j'ai sorti de nulle part.
Cela s'est produit la dernière fois que j'ai expédié des mises à jour logicielles à l'armée américaine pour un système dont elles avaient acheté un grand nombre à mon ancien employeur. La valeur en dollars des contrats a été mesurée en milliards de dollars (à l'époque où les dollars américains valaient beaucoup plus)
Cela aide donc parfois.
Curieusement: là où je travaille maintenant, nous expédions également à chaque client un livrable différent .... (Et ce n'est pas quelque chose que j'ai décidé, au cas où vous vous poseriez la question.)
Je soupçonne que c'est beaucoup plus courant dans l'espace de défense / aérospatial que dans les applications de film rétractable ou Web.
la source
git
peut même faire la différence entre l'auteur et le committer, vous pouvez donc conserver un référentiel «audité» dans lequel vous savez à la fois qui a créé le patch (l'auteur) et qui l'a audité (le committer). Fournissez-nous une situation exemplaire et je vais inverser mon -1.Il n'y a aucun avantage à la gestion des versions par fichier.
Les inconvénients, en revanche, sont nombreux et manifestes.
la source
Je pourrais dire que les systèmes de contrôle de version "par fichier" n'ont pas d'avantages clairs autres que la mise en œuvre du VCS. Les codeurs du VCS seraient heureux de coder lorsqu'il s'agissait d'un versionnement "par fichier". Je suis d'accord sur le fait que cela a été soulevé historiquement.
la source
Il n'y a aucun avantage sur l'approche par fichier lorsque vous avez des fichiers associés. Quel est le cas le plus courant dans un environnement de développement.
Dans quelques cas particuliers - / etc ou. les fichiers de votre répertoire personnel sous Unix sont les seuls que j'utilise régulièrement - vous gérez (principalement) des fichiers non liés. Et puis, avoir un système qui insiste pour rester synchronisé avec les changements non liés peut être une nuisance.
la source