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.
| 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 |

