This text is a work in progress—highly subject to change—and may not accurately describe any released version of the Apache™ Subversion® software. Bookmarking or otherwise referring others to this page is probably not such a smart idea. Please visit http://www.svnbook.com/ for stable versions of this book.

Suivi de versions des répertoires

Subversion assure le suivi de l'arborescence entière, pas seulement des fichiers. C'est une des raisons majeures pour lesquelles Subversion a été créé, dans le but de se substituer à CVS.

Voilà ce que cela implique, du point de vue d'un ancien utilisateur de CVS :

Approfondissons ce dernier point. La gestion de versions d'un répertoire est un problème difficile ; comme nous voulons autoriser des copies de travail à cheval sur plusieurs révisions, des limitations apparaissent quand on essaie de pousser le modèle trop loin.

D'un point de vue théorique, nous définissons « la révision 5 du répertoire machin » comme un ensemble d'entrées et de propriétés du répertoire. Maintenant, supposons que nous ajoutons et supprimons des fichiers de machin, puis que nous propageons ces modifications. Dire que nous avons toujours la révision 5 de machin est un mensonge. Cependant, si nous changeons le numéro de révision de machin après la propagation, c'est aussi un mensonge ; il peut y avoir d'autres changements sur machin que nous n'avons pas encore reçus parce que nous n'avons pas encore effectué de mise à jour (commande svn update).

Subversion traite ce problème en conservant discrètement, dans la zone .svn, le détail des ajouts et des suppressions propagés. Par la suite, quand vous lancez svn update, ces informations sont prises en compte et combinées avec celles du dépôt et le nouveau numéro de révision du répertoire est alors positionné correctement. Ainsi, c'est seulement après une mise à jour que vous pouvez affirmer, sans risque de vous tromper, que vous disposez d'une révision « parfaite » d'un répertoire. La plupart du temps, votre copie de travail contient des répertoires « imparfaitement » synchronisés.

De la même manière, un problème survient si vous essayez de propager des modifications de propriétés sur un répertoire. Normalement, la propagation devrait ajuster le numéro de révision du répertoire de la copie de travail locale. Mais là encore, ce serait un mensonge puisqu'il peut y avoir des ajouts et des suppressions que le répertoire n'a pas encore reçu en raison de la mise à jour qui n'a pas encore eu lieu. En conséquence, il n'est pas permis de propager des changements sur les propriétés d'un répertoire sans que ce répertoire ne soit préalablement mis à jour.

Pour plus d'informations sur les limitations de la gestion de versions des répertoires, reportez-vous à la section intitulée « Copies de travail mixtes, à révisions mélangées ».