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.

Partie I. Faire connaissance avec Subversion

Table des matières

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 !
Enregistrement de données dans le dépôt
Importation de fichiers et de dossiers
Organisation conseillée d'un dépôt
Limitations sur les noms
Création d'une copie de travail
Cycle de travail de base
Mise à jour de la copie de travail
Modifications dans la copie de travail
Revue des changements apportés
Vue d'ensemble des changements effectués
Détail des modifications effectuées localement
Annulation des changements de la copie de travail
Résolution des conflits
Traitement des lignes en conflit de façon interactive
Résolution des conflits en mode interactif
Remise à plus tard de la résolution d'un conflit
Résolution des conflits à la main
Abandon des modifications au profit de la révision la plus récente
Retour en arrière avec svn revert
Propagation des modifications
Recherche dans l'historique
Détail des modifications passées
Modifications locales
Comparaison entre la copie de travail et le dépôt
Comparaison entre des révisions du dépôt
Historique des modifications
Navigation dans le dépôt
Affichage du contenu d'un fichier
Affichage ligne par ligne des auteurs de modifications
Contenu des dossiers suivis en versions
Extraction d'anciennes versions au sein d'un dépôt
Parfois, il suffit de faire le ménage
Suppression d'une copie de travail
Reprise après une interruption
Gestion des 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
Utilisation des 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
Occultation des éléments non suivis en versions
Substitution de mots-clés
Répertoires clairsemés
Verrouillage
Création d'un verrou
Identification d'un verrou
Cassage et vol d'un verrou
Communication par l'intermédiaire des verrous
Définition de références externes
Listes de modifications
Création et modification de listes 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
Suppression des éléments d'authentification déjà en cache
Authentification en ligne de commande
Un dernier mot sur l'authentification
Travail sans copie de travail
Opérations du client texte interactif à distance
Utilisation de svnmucc
Résumé
4. Gestion des branches
Définition d'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
Fusions de sous-arborescences et mergeinfo
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
Contrôle d'accès au dépôt
Création et configuration d'un dépôt
Création d'un dépôt
Mise en place des procédures automatiques
Configuration de l'environnement des procédures automatiques
Utilisations classiques des procédures automatiques
Trouver des procédures automatiques ou écrire les vôtres
Configuration de FSFS
Maintenance d'un dépôt
Boîte à outils de l'administrateur
svnadmin
svnlook
svndumpfilter
svnrdump
svnsync
fsfs-reshard.py
Correction des commentaires de propagation
Gestion de l'espace disque
Économie d'espace disque
Suppression des transactions mortes
Tasser le système de fichiers FSFS
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
Référence pour la configuration de svnserve
Configuration générale
Configuration de Cyrus SASL
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
Fichier de contrôle d'accès suivi en versions dans le dépôt
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é