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.

Gestion de versions avec Subversion [En cours de rédaction]

Pour Subversion 1.8

(Compilé à partir de Revision5302)

Ben Collins-Sussman

Brian W. Fitzpatrick

C. Michael Pilato

Ce travail est placé sous la licence Creative Commons Attribution. Pour voir le contenu de cette licence, rendez-vous sur http://creativecommons.org/licenses/by/2.0/fr/. Vous pouvez aussi envoyez une lettre à Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.


Table des matières

Avant-propos
Préface
Qu'est-ce que Subversion ?
Subversion est-il l'outil approprié ?
L'histoire de Subversion
L'architecture de Subversion
Les composantes de Subversion
Ce qui a changé dans Subversion
Public visé
Comment lire ce livre
Organisation de ce livre
Ce livre est libre
Remerciements
I. Faire connaissance avec Subversion
1. Notions fondamentales
Notions générales de la gestion de versions
Le dépôt
Copie de travail
Modèles de gestion de versions
Problématique du partage de fichiers
Modèle verrouiller-modifier-libérer
Modèle copier-modifier-fusionner
Subversion en action
Dépôts Subversion
Révisions
URL des dépôts Subversion
Copies de travail
Fonctionnement de la copie de travail
Actions de base sur la copie de travail
Copies de travail mixtes, à révisions mélangées
Résumé
2. Utilisation de base
À l'aide !
Enregistrer des données dans votre dépôt
Importer des fichiers et des dossiers
Organisation conseillée d'un dépôt
Qu'y a-t-il dans un nom ?
Créer une copie de travail
Cycle de travail de base
Mettre à jour votre copie de travail
Apporter des modifications à votre copie de travail
Examiner les changements apportés
Avoir une vue d'ensemble des changements effectués
Voir en détail les modifications que vous avez effectuées localement
Annuler des changements sur la copie de travail
Résoudre les conflits
Voir les lignes en conflit de façon interactive
Résoudre les conflits en mode interactif
Remettre à plus tard la résolution d'un conflit
Résoudre les conflits à la main
Abandonner vos modifications au profit de la révision la plus récente
Revenir en arrière : utiliser svn revert
Propager vos modifications
Rechercher dans l'historique
Examiner le détail des modifications passées
Modifications locales
Comparer une copie de travail et le dépôt
Comparer des révisions du dépôt
Afficher l'historique des modifications
Naviguer dans le dépôt
Afficher le contenu d'un fichier
Afficher ligne par ligne les auteurs de modifications
Lister le contenu des dossiers suivis en versions
Retrouver d'anciennes versions au sein d'un dépôt
Parfois, il suffit de faire le ménage
Se débarrasser d'une copie de travail
Reprendre après une interruption
Gérer les conflits d'arborescences
Un exemple de conflit d'arborescences
Résumé
3. Sujets avancés
Identifiants de révisions
Mots-clés de révision
Dates de révision
Révisions pivots et révisions opérationnelles
Propriétés
Utiliser les propriétés
Manipuler les propriétés
Les propriétés et le cycle de travail Subversion
Propriétés héritées
Configuration automatique des propriétés
Propriétés réservées à l'usage de Subversion
Propriétés suivies en versions
Propriétés non suivies en versions
Portabilité des fichiers
Type de contenu des fichiers
Fichiers exécutables ou non
Caractères de fin de ligne
Occulter les éléments non suivis en versions
Substitution de mots-clés
Répertoires clairsemés
Verrouillage
Créer un verrou
Identifier un verrou
Casser et voler un verrou
Communiquer par l'intermédiaire des verrous
Définir des références externes
Listes de modifications
Création et modification d'une liste de modifications
Listes de modifications : des filtres pour vos opérations
Limitations des listes de modifications
Modèle de communication réseau
Requêtes et réponses
Éléments d'authentification du client
Mise en cache des éléments d'authentification
Désactivation de la mise en cache des mots de passe
Supprimer des éléments d'authentification déjà en cache
Authentification en ligne de commande
Travail sans copie de travail
Opérations du client texte interactif à distance
Utilisation de svnmucc
Résumé
4. Gestion des branches
Qu'est-ce qu'une branche ?
Utilisation des branches
Création d'une branche
Travail sur votre branche
Gestion des branches par Subversion : notions clés
Fusions : pratiques de base
Ensembles de modifications
Garder une branche synchronisée
Réintegration d'une branche
Mergeinfo et aperçus
Retour en arrière sur des modifications
Résurrection des éléments effacés
Fusions : pratiques avancées
Sélection à la main
Syntaxe de la fusion : pour tout vous dire
Fusions sans mergeinfo
Plus de détails sur les conflits liés aux fusions
Blocage de modifications
Historiques et annotations tenant compte des fusions passées
Prise en compte ou non de l'ascendance
Fusions, copies et renommages
Blocage des clients qui ne prennent pas en compte les fusions
Recommandations finales sur le suivi des fusions
Parcours des branches
Étiquettes
Création d'une étiquette simple
Création d'une étiquette complexe
Maintenance des branches
Agencement du dépôt
Durée de vie des données
Modèles courants de gestion des branches
Branches de publication
Branches fonctionnelles
Branches fournisseurs
Procédure générale de gestion des branches fournisseurs
Branches fournisseurs depuis des dépôts externes
Branches fournisseurs à partir de sources mirroirs
Créer une branche ou ne pas créer une branche ?
Résumé
5. Administration d'un dépôt
Définition d'un dépôt Subversion
Stratégies de déploiement d'un dépôt
Stratégies d'organisation d'un dépôt
Stratégies d'hébergement d'un dépôt
Choix du magasin de données
Berkeley DB
FSFS
Création et configuration d'un dépôt
Création d'un dépôt
Mise en place des procédures automatiques
Utilisations classiques des procédures automatiques
Trouver des procédures automatiques ou écrire les vôtres
Configuration de la base de données Berkeley DB
Maintenance d'un dépôt
Boîte à outils de l'administrateur
svnadmin
svnlook
svndumpfilter
svnrdump
svnsync
fsfs-reshard.py
Utilitaires Berkeley DB
Correction des messages de propagation
Gestion de l'espace disque
Économie d'espace disque
Suppression des transactions mortes
Purge des fichiers de journalisation inutilisés de Berkeley DB
Tasser le système de fichiers FSFS
Rétablissement de bases de données Berkeley DB
Migration des données d'un dépôt
Migration des données d'un dépôt à l'aide de svnadmin
Migration des données d'un dépôt en utilisant svnrdump
Filtrage de l'historique d'un dépôt
Réplication d'un dépôt
Réplication avec svnsync
Réplication partielle avec svnsync
Une astuce rapide pour la création de mirroirs
Autour des réplications
Sauvegarde d'un dépôt
Gestion des identifiants uniques (UUID) des dépôts
Déplacement et suppression d'un dépôt
Résumé
6. Configuration du serveur
Présentation générale
Choix d'une configuration serveur
Serveur svnserve
svnserve sur SSH
Serveur HTTP Apache
Recommandations
svnserve, un serveur sur mesure
Démarrage du serveur
svnserve en serveur autonome
svnserve via inetd
svnserve via xinetd
svnserve encapsulé dans un tunnel
svnserve en tant que service Windows
svnserve en tant que tâche launchd
Authentification et contrôle d'accès intégrés
Création d'un fichier utilisateurs et d'un domaine d'authentification
Mise en place du contrôle d'accès
Utilisation de svnserve avec SASL
Authentification par SASL
Chiffrement SASL
Encapsulation de svnserve dans un tunnel SSH
Astuces de configuration de SSH
Mise en œuvre initiale
Contrôle de la commande à exécuter
httpd, le serveur HTTP Apache
Prérequis
Configuration Apache de base
Options d'authentification
Mise en place de l'authentification HTTP basique
Authentification par condensat (digest)
Contrôle d'accès
Contrôle d'accès général
Contrôle d'accès par répertoire
Désactivation du contrôle sur les chemins
Encapsulation du trafic réseau avec SSL
Configuration du certificat serveur SSL de Subversion
Gestion des certificats clients SSL Subversion
Amélioration des performances
KeepAlive
Mises à jour groupées
Fonctionnalités bonus
Navigation dans les dépôts
Journalisation Apache
Mandataire en écriture
Autres fonctionnalités d'Apache
Référence pour la configuration d'un serveur Subversion HTTP Apache
Directives de configuration de mod_dav_svn
Directives de configuration de mod_authz_svn
Contrôle d'accès basé sur les chemins
Introduction au contrôle d'accès basé sur les chemins
Contrôle d'accès par groupes
Alias
Fonctionnalités avancées de contrôle d'accès
Embûches avec le contrôle d'accès
Journalisation du haut-niveau
Optimisation du serveur
Mise en cache des données
Compression des données sur le réseau
Accès au dépôt par plusieurs méthodes
7. Personnalisation de Subversion
Zone de configuration des exécutables
Agencement de la zone de configuration
Configuration via la base de registre Windows
Options de configuration
Configuration générale
Configuration spécifique à un serveur
Localisation
Généralités sur la localisation
Utilisation des paramètres régionaux par Subversion
Utilisation d'éditeurs externes
Utilisation des outils externes de comparaison et de fusion
Programmes externes de comparaison
Programmes externes de comparaison de trois fichiers
Outils de fusion externes
Résumé
8. Intégration de Subversion
Organisation des bibliothèques en couches successives
Couche dépôt
Couche d'accès au dépôt
Couche client
Utilisation des API
APR, la bibliothèque Apache de portabilité des exécutables
Fonctions et bâtons
Prérequis pour les URL et les chemins
Utilisation d'autres langages que C et C++
Exemples de code
Résumé
II. Guide de référence des commandes Subversion
I. Guide de référence de svn : le client texte interactif
svn add
svn blame (praise, annotate, ann)
svn cat
svn changelist (cl)
svn checkout (co)
svn cleanup
svn commit (ci)
svn copy (cp)
svn delete (del, remove, rm)
svn diff (di)
svn export
svn help (h, ?)
svn import
svn info
svn list (ls)
svn lock
svn log
svn merge
svn mergeinfo
svn mkdir
svn move (mv)
svn patch
svn propdel (pdel, pd)
svn propedit (pedit, pe)
svn propget (pget, pg)
svn proplist (plist, pl)
svn propset (pset, ps)
svn relocate
svn resolve
svn resolved
svn revert
svn status (stat, st)
svn switch (sw)
svn unlock
svn update (up)
svn upgrade
II. Guide de référence de svnadmin : administration des dépôts Subversion
svnadmin crashtest
svnadmin create
svnadmin deltify
svnadmin dump
svnadmin freeze
svnadmin help (h, ?)
svnadmin hotcopy
svnadmin list-dblogs
svnadmin list-unused-dblogs
svnadmin load
svnadmin lock
svnadmin lslocks
svnadmin lstxns
svnadmin pack
svnadmin recover
svnadmin rmlocks
svnadmin rmtxns
svnadmin setlog
svnadmin setrevprop
svnadmin setuuid
svnadmin unlock
svnadmin upgrade
svnadmin verify
III. Guide de référence de svnlook : outil d'exploration du contenu d'un dépôt Subversion
svnlook author
svnlook cat
svnlook changed
svnlook date
svnlook diff
svnlook dirs-changed
svnlook filesize
svnlook help (h, ?)
svnlook history
svnlook info
svnlook lock
svnlook log
svnlook propget (pget, pg)
svnlook proplist (plist, pl)
svnlook tree
svnlook uuid
svnlook youngest
IV. Guide de référence de svnserve : serveur Subversion sur mesure
svnserve
V. Guide de référence de svnversion : informations relatives à la copie de travail Subversion
svnversion
VI. Guide de référence de svnsync : réplication de dépôt Subversion
svnsync copy-revprops
svnsync help
svnsync info
svnsync initialize (init)
svnsync synchronize (sync)
VII. Guide de référence de svnrdump : migration à distance des données d'un dépôt Subversion
svnrdump dump
svnrdump help
svnrdump load
VIII. guide de référence de svndumpfilter : outil de filtrage de l'historique de Subversion
svndumpfilter exclude
svndumpfilter include
svndumpfilter help
IX. Guide de référence de svnmucc : client texte Subversion pour URL multiples
svnmucc
X. Guide de référence des procédures automatiques de Subversion
start-commit
pre-commit
post-commit
pre-revprop-change
post-revprop-change
pre-lock
post-lock
pre-unlock
post-unlock
III. Appendices
A. Guide de démarrage rapide avec Subversion
Installation de Subversion
Tutoriel rapide
B. Guide Subversion à l'usage des utilisateurs de CVS
Les numéros de révisions sont différents
Suivi de versions des répertoires
Davantage d'opérations en mode déconnecté
Distinction entre les commandes status et update
Status
Update
Branches et étiquettes
Propriétés des métadonnées
Résolution des conflits
Fichiers binaires et conversions
Gestion de versions des modules
Authentification
Conversion d'un dépôt CVS vers Subversion
C. WebDAV et la gestion de versions automatique
À propos de WebDAV
Gestion de versions automatique
Interopérabilité des clients
Applications WebDAV autonomes
Microsoft Office, Dreamweaver, Photoshop
cadaver, DAV Explorer
Greffons WebDAV pour explorateur de fichiers
Dossiers Web de Microsoft
Nautilus, Konqueror
Implémentations de WebDAV en système de fichiers
WebDrive, NetDrive
Mac OS X
davfs2 (Linux)
D. Le système de fichiers Berkeley DB
Configuration de l'environnement Berkeley DB
Limites de Berkeley DB
Limites architecturales
Déploiement sur un partage réseau
Tolérance aux pannes et restauration
Maintenance d'un dépôt Berkeley DB
Rétablissement de bases de données Berkeley DB
Purge des fichiers de journalisation inutilisés
Utilitaires Berkeley DB
E. Copyright
Index

Liste des illustrations

1. L'architecture de Subversion
1.1. Un authentique système client/serveur
1.2. La situation à éviter
1.3. Modèle verrouiller-modifier-libérer
1.4. Modèle copier-modifier-fusionner
1.5. Modèle copier-modifier-fusionner (suite)
1.6. L'évolution de l'arborescence au cours du temps
1.7. Système de fichiers du dépôt
4.1. Branches de développement
4.2. Structure initiale du dépôt
4.3. Dépôt avec nouvelle copie
4.4. Historique des branches d'un fichier
8.1. Fichiers et répertoires en deux dimensions
8.2. Prise en compte du temps — la troisième dimension de la gestion de versions !

Liste des tableaux

1.1. Les différents motifs d'URL pour l'accès aux dépôts
2.1. Requêtes classiques dans l'historique
4.1. Commandes de gestion des branches et des fusions
5.1. Comparaison des magasins de données de dépôts
6.1. Comparaison des fonctionnalités des serveurs Subversion
C.1. Principaux clients WebDAV

Liste des exemples

4.1. Procédure automatique de vérification des capacités de suivi des fusions avant une propagation
5.1. hooks-env (configuration personnalisée de l'environnement des procédures automatiques)
5.2. procédure automatique start-commit qui s'assure que le client sait suivre les fusions.
5.3. txn-info.sh (lister les transactions inachevées)
5.4. Procédure automatique pre-revprop-change du dépôt miroir
5.5. Procédure automatique start-commit du dépôt miroir
6.1. Exemple de fichier de définition de tâche launchd pour svnserve
6.2. Exemple-type de configuration : accès anonyme
6.3. Exemple-type de configuration : accès authentifié
6.4. Exemple-type de configuration : accès mixte authentifié/anonyme
6.5. Désactiver complètement les contrôles sur les chemins
7.1. Exemple de fichier de modification de la base de registre (.reg)
7.2. diffwrap.py
7.3. diffwrap.bat
7.4. diff3wrap.py
7.5. diff3wrap.bat
7.6. mergewrap.py
7.7. mergewrap.bat
8.1. Utilisation de la couche dépôt
8.2. Utilisation de la couche dépôt en Python
8.3. Une version de status en Python