Lexique Pour savoir quel terme désigne quoi: * ressource: tout document (fichier, répertoire, lien, ...) enregistré dans le référentiel, * référentiel: version francophone de "repository". Base de données concervant les différentes versions d'une ou plusieurs ressources, * copie de travail ou copie locale: partie ou ensemble d'un référentiel copié sur le poste de la personne chargée d'y faire des modifications, * commit: opération consistant à confirmer dans le référentiel les modifications apportées sur la copie de travail, * révision: toute modification effectuée sur une des ressources du référentiel produit une révision. Un numéro unique est donné à chacune de ces modifications: r0, r1, r2, r3, ... Un numéro de révision est aussi affecté au référentiel lui même, * tag/étiquette: marquage fait sur une révision afin d'y revenir plus tard. Le terme français ne me semble pas encore tout à fait accepté, j'utilise donc l'un ou l'autre. Les composantes de Subversion ---------------------------- svn Le programme client en ligne de commande. svnversion Un programme permettant d'examiner l'état d'une copie de travail (en termes de révisions des éléments présents). svnlook Un outil qui permet d'examiner directement un dépôt Subversion. svnadmin Un outil destiné à la création, la modification ou la réparation d'un dépôt Subversion. mod_dav_svn Un greffon pour le serveur HTTP Apache, utilisé pour rendre votre dépôt disponible à d'autres personnes à travers un réseau. svnserve Un serveur autonome créé sur mesure pour Subversion, pouvant fonctionner comme un processus démon ou pouvant être invoqué par SSH ; une autre façon de rendre votre dépôt accessible à d'autres personnes à travers un réseau. svndumpfilter Un programme qui permet de filtrer les flux d'exports de l'historique de vos dépôts. svnsync Un programme capable de synchroniser de manière incrémentale un dépôt avec un autre dépôt à travers un réseau. -------------------------- les URL doivent être écrite comme ceci: # en local sur Linux ou unix-like svn checkout file:///var/svn/depot # ou svn checkout file:///localhost/var/svn/depot alors que sur windows il vaut mieux placer l'URL entre guillemet pour éviter les confusions avec file:/// Accès direct au dépôt (sur un disque local). http:// Accès via le protocole WebDAV à un serveur Apache configuré pour Subversion. https:// Identique à http://, mais avec chiffrement SSL. svn:// Accès via un protocole personnalisé à un serveur svnserve. svn+ssh:// Identique à svn://, mais à travers un tunnel SSH. -------------------------------------- Copies de travail ---------------- Une copie de travail Subversion est une arborescence classique de répertoire de votre système de fichier local, contenant un ensemble de fichiers. C'est votre espace de travail personnel privé. Chaque repertoire de votre copie de travail contient un sous-répertoire appelé .svn, qui est le répertoire administratif de votre copie de travail. Il contient des fichiers qui lui permettent d'identifier quel fichier est périmé par rapport au travail des autres ou des modifications non publiées. Les copies de travail suivent l'évolution du dépôt Pour chaque fichier d'un répertoire de travail, Subversion enregistre deux informations essentielles dans la zone administrative .svn/ : * la révision sur laquelle votre fichier de travail est basé (qui est appelée la révision de travail du fichier) et * la date et l'heure de la dernière mise à jour de la copie locale depuis le dépôt À partir de ces informations, en dialoguant avec le dépôt, Subversion est capable de déterminer dans lequel des quatre états suivants se trouve un fichier de travail : Inchangé et à jour Le fichier est inchangé dans le répertoire de travail et aucune modification de ce fichier n'a été propagée vers le dépôt depuis sa révision de travail. Un appel à svn commit sur le fichier ne fera rien, un appel à svn update sur le fichier ne fera rien non plus. Modifié localement et à jour Le fichier a été modifié dans le répertoire de travail et aucune modification du fichier n'a été propagée dans le dépôt depuis la dernière mise à jour. Il existe des modifications locales qui n'ont pas été propagées vers le dépôt, donc un appel à svn commit sur le fichier permettra de publier vos modifications et un appel à svn update ne fera rien. Inchangé et périmé Le fichier n'a pas été modifié dans le répertoire de travail mais a changé dans le dépôt. Le fichier devra être mis à jour à un moment ou à un autre, pour l'amener au niveau de la dernière révision publique. Un appel à svn commit sur le fichier ne fera rien et un appel à svn update incorporera les dernières modifications dans votre copie de travail. Modifié localement et périmé Le fichier a été modifié à la fois dans le répertoire de travail et dans le dépôt. Un appel à svn commit sur le fichier va échouer, renvoyant comme erreur « Périmé » (« out-of-date » en anglais). Le fichier doit d'abord être mis à jour ; un appel à svn update va tenter de fusionner les modifications publiques avec les modifications locales. Si Subversion ne parvient pas à réaliser automatiquement cette fusion de manière crédible, il va laisser à l'utilisateur la tâche de résoudre le conflit. Tout ceci peut sembler compliqué à gérer mais la commande svn status vous indique dans quel état se trouve n'importe quel élément de votre copie de travail. Pour plus d'informations sur cette commande, référez-vous à la section intitulée « Avoir une vue d'ensemble des changements effectués ». Copies de travail mixtes, à révisions mélangées