SVNBOOK Chap6 Overview

De Framalang Wiki.

Cette page fait partie du projet Version control with subversion.

Pseudo Code Rôle Statut
SVF Traduction Fait
Hotshot92 1ere Relecture Fait
Validation


Overview

Overview

Présentation générale

Subversion was designed with an abstract network layer. This means that a repository can be programmatically accessed by any sort of server process, and the client “repository access” API allows programmers to write plug-ins that speak relevant network protocols. In theory, Subversion can use an infinite number of network implementations. In practice, there are only two servers at the time of this writing.

Apache is an extremely popular web server; using the mod_dav_svn module, Apache can access a repository and make it available to clients via the WebDAV/DeltaV protocol, which is an extension of HTTP. Because Apache is an extremely extensible server, it provides a number of features “for free,” such as encrypted SSL communication, logging, integration with a number of third-party authentication systems, and limited built-in web browsing of repositories.

In the other corner is svnserve: a small, lightweight server program that speaks a custom protocol with clients. Because its protocol is explicitly designed for Subversion and is stateful (unlike HTTP), it provides significantly faster network operations—but at the cost of some features as well. While it can use SASL to provide a variety of authentication and encryption options, it has no logging or built-in web browsing. It is, however, extremely easy to set up and is often the best option for small teams just starting out with Subversion.

A third option is to use svnserve tunneled over an SSH connection. Even though this scenario still uses svnserve, it differs quite a bit in features from a traditional svnserve deployment. SSH is used to encrypt all communication. SSH is also used exclusively to authenticate, so real system accounts are required on the server host (unlike vanilla svnserve, which has its own private user accounts). Finally, because this setup requires that each user spawn a private, temporary svnserve process, it's equivalent (from a permissions point of view) to allowing a group of local users to all access the repository via file:// URLs. Path-based access control has no meaning, since each user is accessing the repository database files directly.


Table 6.1, “Comparison of subversion server options” provides a quick summary of the three typical server deployments.

Subversion a été conçu avec une couche réseau abstraite. Cela signifie que l'on peut accéder de façon automatisée à un dépôt par toute sorte de protocoles client/serveur, et que l'interface (l'API) d'accès au dépôt du client permet aux programmeurs d'écrire des greffons implémentant les protocoles réseaux appropriés. En théorie, Subversion peut utiliser un nombre infini d'implémentations réseau. En pratique, il n'existe à ce jour que deux serveurs.

Apache est un serveur web extrêmement populaire ; en utilisant le module mod_dav_svn, Apache a accès au dépôt et peut le rendre accessible aux clients via le protocle WebDAV/DeltaV, qui est une extension d'HTTP. Comme Apache est un serveur très complet, il inclut un grand nombre de fonctionnalités "gratuites", telles que : communications chiffrées par SSL, journalisation, intégration avec bon nombre de systèmes d'authentification tiers et navigation web limitée des dépôts.

A l'opposé se trouve svnserve : un petit programme serveur, léger, qui communique via un protocole sur mesure avec les clients. Parce que ce protocole a été conçu spécialement pour Subversion et possède la notion d'états (à la différence d'HTTP), il offre des opérations significativement plus rapides, certes aux dépens de certaines fonctionnalités. Bien qu'il sache utiliser SASL pour offrir toute une gamme d'options d'authentification et de chiffrement, il ne possède ni journalisation ni navigation web intégrée. Il est néanmoins très facile à mettre en place et constitue souvent le meilleur choix pour de petites équipes débutant avec Subversion.

Une troisième option consiste à utiliser svnserve encapsulé dans une connexion SSH. Même si ce scénario utilise toujours svnserve, il diffère quelque peu, en termes de fonctionnalités, d'un déploiement svnserve traditionnel. SSH sert à chiffrer toutes les communications. Par ailleurs, l'authentification utilise exclusivement SSH, ce qui nécessite des comptes utilisateurs au niveau système sur le serveur hôte (à la différence de "svnserve simple", qui possède ses propres comptes utilisateurs privés). Enfin, avec ce type de déploiement, un processus svnserve temporaire privé est créé pour chaque utilisateur qui se connecte, ce qui équivaut (du point de vue des permissions) à permettre à un groupe d'utilisateurs locaux d'accéder au dépôt via des URL file://. Les autorisations d'accès basées sur des chemins n'ont donc aucun sens, puisque chaque utilisateur accède aux fichiers de la base de données du dépôt directement.


Le tableau 6.1, "Comparaison des options des serveurs Subversion", présente un résumé rapide des trois types courants de déploiements de serveurs.

--Sub Versif 10 avril 2009 à 14:45 (CEST): le terme limited de "limited built-in web browsing" n'a, à mon sens, pas de lien avec la gestion des restriction d'accès (à confirmer/infirmer par la suite)
Feature Apache + mod_dav_svn svnserve svnserve over SSH
Authentication options HTTP(S) basic auth, X.509 certificates, LDAP, NTLM, or any other mechanism available to Apache httpd CRAM-MD5 by default; LDAP, NTLM, or any other mechanism available to SASL SSH
User account options Private 'users' file, or other mechanisms available to Apache httpd (LDAP, SQL, etc.) Private 'users' file, or other mechanisms available to SASL (LDAP, SQL, etc.) System accounts
Authorization options Read/write access can be granted over the whole repository, or specified per path Read/write access can be granted over the whole repository, or specified per path Read/write access only grantable over the whole repository
Encryption Available via optional SSL Available via optional SASL features Inherent in SSH connection
Logging Full Apache logs of each HTTP request, with optional “high-level” logging of general client operations No logging No logging
Interoperability Accessible by other WebDAV clients Talks only to svn clients Talks only to svn clients
Web viewing Limited built-in support, or via third-party tools such as ViewVC Only via third-party tools such as ViewVC Only via third-party tools such as ViewVC
Master-slave server replication Transparent write-proxying available from slave to master Can only create read-only slave servers Can only create read-only slave servers
Speed Somewhat slower Somewhat faster Somewhat faster
Initial setup Somewhat complex Extremely simple Moderately simple


Fonctionnalité Apache + mod_dav_svn svnserve svnserve sur SSH
Authentification Authentification HTTP(S) de base, certificats X.509, LDAP, NTLM, ou tout autre mécanisme compatible avec Apache CRAM-MD5 par défaut ; LDAP, NTLM, ou tout autre mécanisme compatible avec SASL SSH
Comptes utilisateurs Fichiers privés ou tout autre mécanisme compatible avec Apache (LDAP, SQL, etc.) Fichiers privés ou tout autre mécanisme compatible avec SASL (LDAP, SQL, etc.) Comptes utilisateurs systèmes
Contrôle d'accès L'accès en lecture/écriture peut être autorisé sur le dépôt tout entier ou restreint à des chemins spécifiés L'accès en lecture/écriture peut être autorisé sur le dépôt tout entier ou restreint à des chemins spécifiés L'accès en lecture/écriture ne peut être autorisé que sur le dépôt tout entier
Chiffrement Disponible via SSL (option) Disponible via les fonctionnalités optionnelles de SASL Inhérent à toute connexion SSH
Journalisation Journaux Apache complets de chaque requête HTTP et en option la journalisation "de haut niveau" des opérations côté client Pas de journaux Pas de journaux
Interoperabilité Accessible par tout client WebDAV Ne peut communiquer qu'avec des clients svn Ne peut communiquer qu'avec des clients svn
Accès Web Support intégré limité ou via des outils tierces tels que ViewVC Uniquement via des outils tierces tels que ViewVC Uniquement via des outils tierces tels que ViewVC
Réplication serveur de type maître-esclave Possibilité d'un mandataire transparent pour l'écriture (de l'esclave vers le maître) Possibilité de créer seulement des serveurs esclaves en lecture seule Possibilité de créer seulement des serveurs esclaves en lecture seule
Vitesse Relativement plus lent Relativement plus rapide Relativement plus rapide
Mise en place Relativement complexe Extrêmement simple Moyennement simple