[svnbook] r3706 committed - Translation to French of Chapter 8 : done.

svnbook at googlecode.com svnbook at googlecode.com
Tue Mar 16 17:13:27 CDT 2010


Revision: 3706
Author: christophe.nanteuil
Date: Tue Mar 16 15:12:27 2010
Log: Translation to French of Chapter 8 : done.

http://code.google.com/p/svnbook/source/detail?r=3706

Modified:
  /trunk/src/fr/book/ch08-embedding-svn.xml

=======================================
--- /trunk/src/fr/book/ch08-embedding-svn.xml	Wed Aug  6 01:45:58 2008
+++ /trunk/src/fr/book/ch08-embedding-svn.xml	Tue Mar 16 15:12:27 2010
@@ -1,585 +1,627 @@
  <chapter id="svn.developer">
-  <title>Embedding Subversion</title>
-
-  <para>Subversion has a modular design: it's implemented as a
-    collection of libraries written in C.  Each library has a
-    well-defined purpose and application programming interface (API),
-    and that interface is available not only for Subversion itself to
-    use, but for any software that wishes to embed or otherwise
-    programmatically control Subversion.  Additionally, Subversion's
-    API is available not only to other C programs, but also to
-    programs written in higher-level languages such as Python, Perl,
-    Java, and Ruby.</para>
-
-  <para>This chapter is for those who wish to interact with Subversion
-    through its public API or its various language bindings.  If you
-    wish to write robust wrapper scripts around Subversion
-    functionality to simplify your own life, are trying to develop
-    more complex integrations between Subversion and other pieces of
-    software, or just have an interest in Subversion's various library
-    modules and what they offer, this chapter is for you.  If,
-    however, you don't foresee yourself participating with Subversion
-    at such a level, feel free to skip this chapter with the
-    confidence that your experience as a Subversion user will not be
-    affected.</para>
+  <title>Intégration de Subversion</title>
+
+  <para>Subversion est conçu de manière modulaire : il est
+    constitué d'un ensemble de bibliothèques écrites en langage C.
+    Chaque bibliothèque a un but et une interface de programmation
+    (API, <quote>application programming interface</quote> en anglais) bien
+    définis ; cette interface est disponible non seulement pour le
+    propre usage de Subversion mais aussi pour n'importe quel programme
+    qui souhaite inclure ou piloter Subversion d'une manière ou d'une
+    autre. En plus, l'API Subversion est non seulement disponible pour
+    les programmes écrits en langage C, mais aussi pour les programmes
+    écrits dans des langages de plus haut niveau tels que Python, Perl,
+    Java et Ruby.</para>
+
+  <para>Ce chapitre est destiné à ceux qui souhaitent interagir avec
+    Subversion au moyen de son API publique ou d'une de ses nombreuses
+    interfaces avec d'autres langages. Si vous souhaitez écrire des
+    scripts robustes qui encapsulent les fonctionnalités de Subversion
+    afin de vous rendre la vie plus facile, si vous essayez de
+    développer des intégrations plus poussées entre Subversion et
+    d'autres logiciels ou si vous êtes juste intéressé par les nombreux
+    modules de Subversion et ce qu'ils ont à offrir, ce chapitre est
+    fait pour vous. Si, par contre, vous ne vous voyez pas participer
+    à Subversion à ce niveau, vous pouvez sauter ce chapitre sans la
+    moindre crainte pour vos compétences en tant qu'utilisateur de
+    Subversion.</para>

    <!-- =================================================================  
-->
    <!-- =================================================================  
-->
    <!-- =================================================================  
-->
    <sect1 id="svn.developer.layerlib">
-    <title>Layered Library Design</title>
-
-    <para>Each of Subversion's core libraries can be said to exist in
-      one of three main layers—the Repository layer, the
-      Repository Access (RA) layer, or the Client layer (see <xref
-      linkend="svn.intro.architecture.dia-1" /> in the Preface).  We will  
examine
-      these layers shortly, but first, let's briefly summarize
-      Subversion's various libraries.  For the sake of consistency, we
-      will refer to the libraries by their extensionless Unix library
-      names (<filename>libsvn_fs</filename>,  
<filename>libsvn_wc</filename>,
+    <title>Organisation des bibliothèques en couches successives</title>
+
+    <para>Chaque bibliothèque au sein de Subversion peut être classée
+      dans une des trois couches principales — la couche dépôt, la
+      couche d'accès au dépôt (RA pour <quote>repository access</quote>
+      en anglais) et la couche client (voir la <xref
+      linkend="svn.intro.architecture.dia-1" /> de la préface). Nous
+      allons examiner ces trois couches rapidement mais, d'abord,
+      passons brièvement en revue les différentes bibliothèques de
+      Subversion. Pour des raisons de cohérence, nous nous référons à
+      ces bibliothèques par leurs noms Unix sans extension
+      (<filename>libsvn_fs</filename>, <filename>libsvn_wc</filename>,
        <filename>mod_dav_svn</filename>, etc.).</para>

      <variablelist>
        <varlistentry>
          <term>libsvn_client</term>
-        <listitem><para>Primary interface for client
-          programs</para></listitem>
+        <listitem><para>interface principale pour les programmes
+          clients ;</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>libsvn_delta</term>
-        <listitem><para>Tree and byte-stream differencing
-          routines</para></listitem>
+        <listitem><para>routines de recherche de différences pour les
+          arborescences et les flux d'octets ;</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>libsvn_diff</term>
-        <listitem><para>Contextual differencing and merging
-          routines</para></listitem>
+        <listitem><para>routines de recherche de différences et de
+          fusions contextuelles ;</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>libsvn_fs</term>
-        <listitem><para>Filesystem commons and module
-          loader</para></listitem>
+        <listitem><para>chargeur de modules et outils communs pour le
+          système de fichiers ;</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>libsvn_fs_base</term>
-        <listitem><para>The Berkeley DB filesystem
-          backend</para></listitem>
+        <listitem><para>gestion du magasin de données Berkeley
+          DB ;</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>libsvn_fs_fs</term>
-        <listitem><para>The native filesystem (FSFS)
-          backend</para></listitem>
+        <listitem><para>gestion du magasin de données natif
+          FSFS ;</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>libsvn_ra</term>
-        <listitem><para>Repository Access commons and module
-          loader</para></listitem>
+        <listitem><para>outils communs pour l'accès au dépôt et
+          chargeur de modules ;</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>libsvn_ra_local</term>
-        <listitem><para>The local Repository Access
-          module</para></listitem>
+        <listitem><para>module d'accès au dépôt en
+          local ;</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>libsvn_ra_neon</term>
-        <listitem><para>The WebDAV Repository Access
-          module</para></listitem>
+        <listitem><para>module d'accès au dépôt par
+          WebDAV ;</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>libsvn_ra_serf</term>
-        <listitem><para>Another (experimental) WebDAV Repository
-          Access module</para></listitem>
+        <listitem><para>autre module (expérimental) d'accès au dépôt par
+          WebDAV ;</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>libsvn_ra_svn</term>
-        <listitem><para>The custom protocol Repository Access
-          module</para></listitem>
+        <listitem><para>modèle d'accès au dépôt par le protocole
+          Subversion ;</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>libsvn_repos</term>
-        <listitem><para>Repository interface</para></listitem>
+        <listitem><para>interface du dépôt ;</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>libsvn_subr</term>
-        <listitem><para>Miscellaneous helpful
-          subroutines</para></listitem>
+        <listitem><para>diverses routines utiles ;</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>libsvn_wc</term>
-        <listitem><para>The working copy management
-          library</para></listitem>
+        <listitem><para>bibliothèque pour la gestion de la copie de
+          travail local ;</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>mod_authz_svn</term>
-        <listitem><para>Apache authorization module for Subversion
-          repositories access via WebDAV</para></listitem>
+        <listitem><para>module Apache d'authentification pour les accès
+          aux dépôts Subversion par WebDAV ;</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>mod_dav_svn</term>
-        <listitem><para>Apache module for mapping WebDAV operations to
-          Subversion ones</para></listitem>
+        <listitem><para>module Apache de correspondance entre les
+          opérations WebDAV et les opérations Subversion.</para></listitem>
        </varlistentry>
      </variablelist>

-    <para>The fact that the word <quote>miscellaneous</quote>
-      appears only once in the previous list is a good sign.  The
-      Subversion development team is serious about making sure that
-      functionality lives in the right layer and libraries.  Perhaps
-      the greatest advantage of the modular design is its lack of
-      complexity from a developer's point of view.  As a developer,
-      you can quickly formulate that kind of <quote>big
-      picture</quote> that allows you to pinpoint the location of
-      certain pieces of functionality with relative ease.</para>
-
-    <para>Another benefit of modularity is the ability to replace a
-      given module with a whole new library that implements the same
-      API without affecting the rest of the code base.  In some sense,
-      this happens within Subversion already.  The
+    <para>Le fait que le mot <quote>divers</quote> n'apparaisse qu'une
+      seule fois dans la liste précédente est plutôt un bon signe.
+      L'équipe de développement de Subversion est particulièrement
+      soucieuse de placer les fonctionnalités dans les couches et
+      bibliothèques appropriées. Un des plus grands avantages de cette
+      conception modulaire, du point de vue du développeur, est sûrement
+      l'absence de complexité. En tant que développeur, vous pouvez vous
+      forger rapidement une image mentale de cette architecture et ainsi
+      trouver relativement facilement l'emplacement des fonctionnalités
+      qui vous intéressent.</para>
+
+    <para>Un autre avantage de la modularité est la possibilité de
+      remplacer un module par une autre bibliothèque qui implémente la
+      même API sans affecter le reste du code. Dans un certain sens,
+      c'est ce qui se passe déjà dans Subversion. Les bibliothèques
        <filename>libsvn_ra_local</filename>,
        <filename>libsvn_ra_neon</filename>,
-      <filename>libsvn_ra_serf</filename>, and
-      <filename>libsvn_ra_svn</filename> libraries each implement the
-      same interface, all working as plug-ins to
-      <filename>libsvn_ra</filename>.  And all four communicate with
-      the Repository layer—<filename>libsvn_ra_local</filename>  
connects to the
-      repository directly; the other three do so over a network.  The
-      <filename>libsvn_fs_base</filename> and
-      <filename>libsvn_fs_fs</filename> libraries are another pair of
-      libraries that implement the same functionality in different
-      ways—both are plug-ins to the common
-      <filename>libsvn_fs</filename> library.</para>
-
-    <para>The client itself also highlights the benefits of modularity
-      in the Subversion design.  Subversion's
-      <filename>libsvn_client</filename> library is a one-stop shop
-      for most of the functionality necessary for designing a working
-      Subversion client (see <xref
-      linkend="svn.developer.layerlib.client"/>).  So while the
-      Subversion distribution provides only the <command>svn</command>
-      command-line client program, several third-party
-      programs provide various forms of graphical client UIs.
-      These GUIs use the same APIs that the stock command-line client
-      does.  This type of modularity has played a large role in the
-      proliferation of available Subversion clients and IDE
-      integrations and, by extension, to the tremendous adoption rate
-      of Subversion itself.</para>
+      <filename>libsvn_ra_serf</filename> et
+      <filename>libsvn_ra_svn</filename> implémentent toutes la même
+      interface et fonctionnent comme des greffons pour
+      <filename>libsvn_ra</filename>.  Et toutes les quatre communiquent
+      avec la couche dépôt — <filename>libsvn_ra_local</filename>
+      se connectant directement au dépôt, les trois autres le faisant à
+      travers le réseau.
+      <filename>libsvn_fs_base</filename> et
+      <filename>libsvn_fs_fs</filename> sont un autre exemple de
+      bibliothèques qui implémentent les mêmes fonctionnalités de
+      différentes manières — les deux sont des greffons pour la
+      bibliothèque commune <filename>libsvn_fs</filename>.</para>
+
+    <para>Le client lui-même illustre également les avantages de la
+      modularité dans l'architecture de Subversion. La bibliothèque
+      <filename>libsvn_client</filename> est un point d'entrée unique
+      pour la plupart des fonctionnalités nécessaires à la conception
+      d'un client Subversion fonctionnel (voir <xref
+      linkend="svn.developer.layerlib.client"/>). Ainsi, bien que la
+      distribution Subversion fournisse seulement le programme en ligne
+      de commande <command>svn</command>, de nombreux programmes tiers
+      fournissent différents types d'IHM. Ces interfaces graphiques
+      utilisent la même API que le client en ligne de commande fourni en
+      standard. Depuis le début, cette modularité joue un rôle majeur
+      dans la prolifération des différents clients Subversion (sous la
+      forme de clients autonomes ou greffés dans des environnements de
+      développement intégrés [IDE en anglais]) et, par extension, dans
+      l'adoption formidablement rapide de Subversion lui-même.</para>

      <!-- ===============================================================  
-->
      <sect2 id="svn.developer.layerlib.repos">
-      <title>Repository Layer</title>
-
-      <para>When referring to Subversion's Repository layer, we're
-        generally talking about two basic concepts—the versioned
-        filesystem implementation (accessed via
-        <filename>libsvn_fs</filename>, and supported by its
-        <filename>libsvn_fs_base</filename> and
-        <filename>libsvn_fs_fs</filename> plug-ins), and the repository
-        logic that wraps it (as implemented in
-        <filename>libsvn_repos</filename>).  These libraries provide
-        the storage and reporting mechanisms for the various revisions
-        of your version-controlled data.  This layer is connected to
-        the Client layer via the Repository Access layer, and is, from
-        the perspective of the Subversion user, the stuff at the
-        <quote>other end of the line.</quote></para>
-
-      <para>The Subversion filesystem is not a kernel-level filesystem
-        that one would install in an operating system (such as the
-        Linux ext2 or NTFS), but instead is a virtual filesystem.
-        Rather than storing <quote>files</quote> and
-        <quote>directories</quote> as real files and directories (the
-        kind you can navigate through using your favorite shell
-        program), it uses one of two available abstract storage
-        backends—either a Berkeley DB database environment or a
-        flat-file representation.  (To learn more about the two
-        repository backends, see <xref
-        linkend="svn.reposadmin.basics.backends"/>.)  There has even
-        been considerable interest by the development community in
-        giving future releases of Subversion the ability to use other
-        backend database systems, perhaps through a mechanism such as
-        Open Database Connectivity (ODBC).  In fact, Google did
-        something similar to this before launching the Google Code
-        Project Hosting service:  they announced in mid-2006 that
-        members of its open source team had written a new proprietary
-        Subversion filesystem plug-in that used Google's ultra-scalable
-        Bigtable database for its storage.</para>
-
-      <para>The filesystem API exported by
-        <filename>libsvn_fs</filename> contains the kinds of
-        functionality you would expect from any other filesystem
-        API—you can create and remove files and directories,
-        copy and move them around, modify file contents, and so on.
-        It also has features that are not quite as common, such as the
-        ability to add, modify, and remove metadata
-        (<quote>properties</quote>) on each file or directory.
-        Furthermore, the Subversion filesystem is a versioning
-        filesystem, which means that as you make changes to your
-        directory tree, Subversion remembers what your tree looked
-        like before those changes.  And before the previous changes.
-        And the previous ones.  And so on, all the way back through
-        versioning time to (and just beyond) the moment you first
-        started adding things to the filesystem.</para>
-
-      <para>All the modifications you make to your tree are done
-        within the context of a Subversion commit transaction.  The
-        following is a simplified general routine for modifying your
-        filesystem:</para>
+      <title>Couche dépôt</title>
+
+      <para>Quand nous faisons référence à la couche dépôt de
+        Subversion, nous parlons généralement de deux concepts de
+        base : l'implémentation du système de fichiers suivi en
+        versions (auquel on a accès via
+        <filename>libsvn_fs</filename> et qui est supporté par les
+        greffons associés <filename>libsvn_fs_base</filename> et
+        <filename>libsvn_fs_fs</filename>) et la logique du dépôt qui
+        l'habille (telle qu'elle est implémentée dans
+        <filename>libsvn_repos</filename>). Ces bibliothèques
+        fournissent les mécanismes de stockage et de comptes-rendus pour
+        les différentes révisions de vos données suivies en versions.
+        Cette couche est connectée à la couche client via la couche
+        d'accès au dépôt et est, du point de vue de l'utilisateur de
+        Subversion, le <quote>truc à l'autre bout de la
+        ligne</quote>.</para>
+
+      <para>Le système de fichiers Subversion n'est pas un système de
+        fichiers de bas niveau que vous pourriez installer sur votre
+        système d'exploitation (tels que NTFS ou ext2 pour Linux) mais
+        un système de fichiers virtuel. Plutôt que de stocker les
+        fichiers et répertoires comme des fichiers et des répertoires
+        réels (du type de ceux dans lesquels vous naviguez avec votre
+        navigateur de fichiers), il utilise un des deux magasins de
+        données abstraits disponibles : soit le système de gestion
+        de bases de données Berkeley DB, soit une représentation dans
+        des fichiers ordinaires, dite <quote>à plat</quote> (pour en
+        apprendre plus sur les deux magasins de données, reportez-vous
+        à <xref linkend="svn.reposadmin.basics.backends"/>). La
+        communauté de développement Subversion a même exprimé le souhait
+        que les futures versions de Subversion puissent utiliser
+        d'autres magasins de données, peut-être à travers un mécanisme
+        tel que ODBC (Open Database Connectivity , standard ouvert de
+        connexion à des bases de données). En fait, Google a fait
+        quelque chose de semblable avant de lancer le service
+        <quote>Google Code Project Hosting</quote> (Hébergement de code
+        source de projets) : ils ont annoncé mi-2006 que les
+        membres de leur équipe open source avaient écrit un nouveau
+        greffon propriétaire de système de fichiers pour Subversion, qui
+        utilisait leur base de données <quote>Google ultra-scalable
+        Bigtable</quote> comme magasin de données.</para>
+
+      <para>L'API du système de fichiers, mise à disposition par
+        <filename>libsvn_fs</filename>, contient les fonctionnalités que
+        vous pouvez attendre de n'importe quel autre système de
+        fichiers : vous pouvez créer et supprimer des fichiers et
+        des répertoires, les copier et les déplacer, modifier le contenu
+        d'un fichier, etc. Elle possède également des caractéristiques
+        peu communes comme la capacité d'ajouter, modifier et supprimer
+        des méta-données (<quote>propriétés</quote>) sur chaque fichier
+        ou répertoire. En outre, le système de fichiers Subversion est
+        un système de fichiers suivi en versions, ce qui veut dire que
+        si vous faites des modifications dans votre arborescence,
+        Subversion se souvient de l'état de votre arborescence avant les
+        modifications. Et il se souvient aussi de l'état avant les
+        modifications précédentes, et l'état encore antérieur, et ainsi
+        de suite. Vous pouvez ainsi remonter le temps (c'est-à-dire les
+        versions) jusqu'au moment où vous avez commencé à ajouter des
+        éléments dans le système de fichiers.</para>
+
+      <para>Toutes les modifications faites sur l'arborescence ont pour
+        contexte les transactions de propagation de Subversion. Ce qui
+        suit est la démarche générale simplifiée de modification du
+        système de fichiers :</para>

        <orderedlist>
          <listitem>
-          <para>Begin a Subversion commit transaction.</para>
+          <para>Commencer une transaction de propagation de
+            Subversion ;</para>
          </listitem>
          <listitem>
-          <para>Make your changes (adds, deletes, property
-            modifications, etc.).</para>
+          <para>Effectuer les modifications (ajouts, suppressions,
+            modifications de propriétés, etc.) ;</para>
          </listitem>
          <listitem>
-          <para>Commit your transaction.</para>
+          <para>Clore la transaction.</para>
          </listitem>
        </orderedlist>

-      <para>Once you have committed your transaction, your filesystem
-        modifications are permanently stored as historical artifacts.
-        Each of these cycles generates a single new revision of your
-        tree, and each revision is forever accessible as an immutable
-        snapshot of <quote>the way things were.</quote></para>
+      <para>Une fois que la transaction est cloturée, les
+        modifications du système de fichiers sont stockées de
+        façon permanente en tant qu'éléments de l'historique. Chacun de
+        ces cycles génère une nouvelle révision de l'arborescence et
+        chaque révision est accessible pour toujours sous la forme d'un
+        cliché, immuable, de l'état de l'arborescence à un moment
+        précis.</para>

        <sidebar>
-        <title>The Transaction Distraction</title>
-
-        <para>The notion of a Subversion transaction can become easily
-          confused with the transaction support provided by the
-          underlying database itself, especially given the former's
-          close proximity to the Berkeley DB database code in
-          <filename>libsvn_fs_base</filename>.  Both types of
-          transaction exist to provide atomicity and isolation.  In
-          other words, transactions give you the ability to perform a
-          set of actions in an all-or-nothing fashion—either all
-          the actions in the set complete with success, or they all
-          get treated as though <emphasis>none</emphasis> of them ever
-          happened—and in a way that does not interfere with
-          other processes acting on the data.</para>
-
-        <para>Database transactions generally encompass small
-          operations related specifically to the modification of data
-          in the database itself (such as changing the contents of a
-          table row).  Subversion transactions are larger in scope,
-          encompassing higher-level operations such as making
-          modifications to a set of files and directories that are
-          intended to be stored as the next revision of the filesystem
-          tree.  If that isn't confusing enough, consider the fact
-          that Subversion uses a database transaction during the
-          creation of a Subversion transaction (so that if the
-          creation of a Subversion transaction fails, the database will
-          look as though we had never attempted that creation in the first
-          place)!</para>
-
-        <para>Fortunately for users of the filesystem API, the
-          transaction support provided by the database system itself
-          is hidden almost entirely from view (as should be expected
-          from a properly modularized library scheme).  It is only
-          when you start digging into the implementation of the
-          filesystem itself that such things become visible (or
-          interesting).</para>
+        <title>Digression sur les transactions</title>
+
+        <para>La notion de transaction Subversion peut être facilement
+          confondue avec la notion de transaction concernant le magasin
+          de données sous-jacent, en particulier à cause de la proximité
+          du code des transactions Subversion dans
+          <filename>libsvn_fs_base</filename> et du code du gestionnaire
+          de bases de données Berkeley DB. Ces deux types de
+          transactions assurent l'atomicité et l'isolation. En d'autres
+          termes, les transactions vous permettent d'effectuer un
+          ensemble d'actions avec une logique tout-ou-rien (soit toutes
+          les actions de l'ensemble se terminent avec succès, soit c'est
+          comme si aucune n'avait eu lieu), ce qui permet de ne pas
+          interférer avec les autres processus qui travaillent sur les
+          données.</para>
+
+        <para>Les transactions dans les bases de données comprennent
+          généralement de petites opérations relatives à la modification
+          de données dans la base elle-même (comme changer le contenu
+          d'une ligne dans une table). Les transactions Subversion ont
+          un champ d'action plus large, elles comprennent des opérations
+          de plus haut niveau telles que modifier un ensemble de
+          fichiers et de répertoires qui doivent être stockés dans la
+          prochaine révision de l'arborescence suivie en versions. Pour
+          ajouter à la confusion, Subversion utilise une transaction de
+          base de données pendant la création d'une transaction
+          Subversion (ainsi, si la création de la transaction Subversion
+          échoue, la base de données sera telle que si la demande de
+          création n'avait jamais eu lieu) !</para>
+
+        <para>Heureusement pour les utilisateurs de l'API du système de
+          fichiers, la notion de transaction du système de gestion de
+          bases de données lui-même est presque entièrement masquée
+          (comme on peut s'y attendre dans une architecture modulaire
+          bien construite). C'est seulement si vous commencez à fouiller
+          dans l'implémentation du système de fichiers que de telles
+          choses deviennent visibles (ou intéressantes).</para>

        </sidebar>

-      <para>Most of the functionality the filesystem
-        interface provides deals with actions that occur on individual
-        filesystem paths.  That is, from outside the filesystem, the
-        primary mechanism for describing and accessing the individual
-        revisions of files and directories comes through the use of
-        path strings such as <filename>/foo/bar</filename>, just as though
-        you were addressing files and directories through your
-        favorite shell program.  You add new files and directories by
-        passing their paths-to-be to the right API functions.  You
-        query for information about them by the same mechanism.</para>
-
-      <para>Unlike most filesystems, though, a path alone is not
-        enough information to identify a file or directory in
-        Subversion.  Think of a directory tree as a two-dimensional
-        system, where a node's siblings represent a sort of
-        left-and-right motion, and navigating into the node's
-        subdirectories represents a downward motion.  <xref
-        linkend="svn.developer.layerlib.repos.dia-1"/> shows a typical
-        representation of a tree as exactly that.</para>
+      <para>La majeure partie des fonctionnalités offertes par
+        l'interface du système de fichiers traite d'actions relatives à
+        un chemin unique du système de fichiers. C'est-à-dire que, vu de
+        l'extérieur du système de fichiers, le mécanisme de base pour
+        décrire et accéder à une révision donnée d'un fichier ou d'un
+        répertoire utilise des chemins classiques tels que
+        <filename>/machin/bidule</filename>, de la même manière que
+        quand vous indiquez un fichier ou un répertoire dans votre
+        interface en ligne de commande favorite. Vous ajoutez de
+        nouveaux fichiers ou répertoires en passant leur
+        <quote>futur</quote> chemin à la fonction idoine de l'API. Vous
+        faites des requêtes sur ces éléments avec le même
+        mécanisme.</para>
+
+      <para>Cependant, contrairement à la plupart des systèmes de
+        fichiers, le chemin n'est pas une information suffisante pour
+        identifier un fichier ou un répertoire dans Subversion.
+        Représentez-vous l'arborescence des répertoires comme un système
+        à deux dimensions, où l'on atteint les frères d'un nœud en se
+        déplaçant horizontalement, à droite ou à gauche, et où la
+        navigation dans les sous-répertoires de ce nœud peut être
+        assimilée à un mouvement vers le bas. La <xref
+        linkend="svn.developer.layerlib.repos.dia-1"/> illustre ce
+        concept pour une arborescence classique.</para>

        <figure id="svn.developer.layerlib.repos.dia-1">
-        <title>Files and directories in two dimensions</title>
+        <title>Fichiers et répertoires en deux dimensions</title>
          <graphic fileref="images/ch08dia1.png"/>
        </figure>

-      <para>The difference here is that the Subversion filesystem has a
-        nifty third dimension that most filesystems do not
-        have—Time!
-        <footnote>
-          <para>We understand that this may come as a shock to sci-fi
-            fans who have long been under the impression that Time was
-            actually the <emphasis>fourth</emphasis> dimension, and we
-            apologize for any emotional trauma induced by our
-            assertion of a different theory.</para>
-        </footnote>
-        In the filesystem interface, nearly every function that has a
-        <parameter>path</parameter> argument also expects a
-        <parameter>root</parameter> argument.  This
-        <literal>svn_fs_root_t</literal> argument describes
-        either a revision or a Subversion transaction (which is simply
-        a revision in the making) and provides that third dimension
-        of context needed to understand the difference between
-        <filename>/foo/bar</filename> in revision 32, and the same
-        path as it exists in revision 98.  <xref
-        linkend="svn.developer.layerlib.repos.dia-2"/> shows revision
-        history as an added dimension to the Subversion filesystem
-        universe.</para>
+      <para>Ici, la différence est que le système de fichiers Subversion
+        possède une élégante troisième dimension que la plupart des
+        systèmes de fichiers n'ont pas : le temps<footnote>
+          <para>Nous comprenons que cela puisse être un choc énorme pour
+            les amateurs de science-fiction, qui ont longtemps cru que
+            le Temps était en fait la quatrième dimension. Nous nous
+            excusons pour le traumatisme psychologique causé par
+            l'affirmation de cette théorie divergente.</para>
+        </footnote>.
+        Dans l'interface du système de fichiers, presque chaque fonction
+        qui demande un argument de type <literal>chemin</literal> attend
+        également un argument de type <literal>racine</literal> (dénommé
+        en fait <literal>svn_fs_root_t</literal>). Cet argument décrit
+        soit une révision soit une transaction (qui est en fait la
+        genèse d'une révision) et fournit la troisième dimension,
+        l'élément de contexte indispensable pour différencier
+        <filename>/machin/bidule</filename> dans la révision 32 et le
+        même chemin dans la révision 98. La <xref
+        linkend="svn.developer.layerlib.repos.dia-2"/> présente
+        l'historique des révisions comme une dimension supplémentaire de
+        l'univers du système de fichiers Subversion.</para>

        <figure id="svn.developer.layerlib.repos.dia-2">
-        <title>Versioning time—the third dimension!</title>
+        <title>Ajouter le temps pour le suivi de versions — la
+          troisième dimension !</title>
          <graphic fileref="images/ch08dia2.png"/>
        </figure>

-      <para>As we mentioned earlier, the
-        <filename>libsvn_fs</filename> API looks and feels like any
-        other filesystem, except that it has this wonderful versioning
-        capability.  It was designed to be usable by any program
-        interested in a versioning filesystem.  Not coincidentally,
-        Subversion itself is interested in that functionality.  But
-        while the filesystem API should be sufficient for basic file
-        and directory versioning support, Subversion wants
-        more—and that is where <filename>libsvn_repos</filename>
-        comes in.</para>
-
-      <para>The Subversion repository library
-        (<filename>libsvn_repos</filename>) sits (logically speaking)
-        atop the <filename>libsvn_fs</filename> API, providing
-        additional functionality beyond that of the underlying
-        versioned filesystem logic.  It does not completely wrap each
-        and every filesystem function—only certain major steps
-        in the general cycle of filesystem activity are wrapped by the
-        repository interface.  Some of these include the creation and
-        commit of Subversion transactions and the modification of
-        revision properties.  These particular events are wrapped by
-        the repository layer because they have hooks associated with
-        them.  A repository hook system is not strictly related to
-        implementing a versioning filesystem, so it lives in the
-        repository wrapper library.</para>
-
-      <para>The hooks mechanism is but one of the reasons for the
-        abstraction of a separate repository library from the rest of
-        the filesystem code.  The <filename>libsvn_repos</filename>
-        API provides several other important utilities to Subversion.
-        These include the abilities to:</para>
+      <para>Comme nous l'avons déjà mentionné, l'API de
+        <filename>libsvn_fs</filename> ressemble à s'y méprendre à celle
+        de n'importe quel autre système de fichiers, sauf qu'on y a
+        ajouté la formidable capacité de suivre les versions. Elle a été
+        conçue pour être utilisable par n'importe quel programme ayant
+        besoin d'un système de fichiers suivi en versions. Et, ce n'est
+        pas un hasard, Subversion lui-même est intéressé par une telle
+        fonctionnalité. Mais, bien que cette API soit suffisante pour
+        effectuer un suivi en versions basique des fichiers et des
+        répertoires, Subversion en demande plus, et c'est là que
+        <filename>libsvn_repos</filename> entre en scène.</para>
+
+      <para>La bibliothèque du dépôt Subversion
+        (<filename>libsvn_repos</filename>) se situe (logiquement
+        parlant) au-dessus de l'API <filename>libsvn_fs</filename> et
+        elle fournit des fonctionnalités supplémentaires allant au-delà
+        de la logique sous-jacente du système de fichiers suivi en
+        versions. Elle ne masque pas entièrement chaque fonction du
+        système de fichiers — seules certaines étapes importantes
+        dans le cycle général de l'activité du système de fichiers sont
+        encapsulées par l'interface du dépôt. Parmi les fonctions
+        encapsulées, on peut citer la création et la propagation des
+        transactions Subversion et la modification des propriétés de
+        révisions. Ces actions particulières sont encapsulées par la
+        couche dépôt parce qu'elles ont des procédures automatiques
+        associées. Le système des procédures automatiques du dépôt n'est
+        pas strictement concomitant à l'implémentation d'un système de
+        fichiers suivi en versions, c'est pourquoi il réside dans la
+        bibliothèque d'encapsulation du dépôt.</para>
+
+      <para>Le mécanisme des procédures automatiques n'est pas l'unique
+        raison qui a conduit à séparer logiquement la bibliothèque du
+        dépôt du reste du code du système de fichiers. L'API de
+        <filename>libsvn_repos</filename> fournit à Subversion un
+        certain nombre d'autres possibilités intéressantes. Parmi elles,
+        on peut citer :</para>

        <itemizedlist>
          <listitem>
-          <para>Create, open, destroy, and perform recovery steps on a
-            Subversion repository and the filesystem included in that
-            repository.</para>
+          <para>créer, ouvrir, détruire et effectuer des actions de
+            restauration sur un dépôt Subversion et le système de
+            fichiers inclus dans ce dépôt ;</para>
          </listitem>
          <listitem>
-          <para>Describe the differences between two filesystem
-            trees.</para>
+          <para>décrire les différences entre deux
+            arborescences ;</para>
          </listitem>
          <listitem>
-          <para>Query for the commit log messages associated with all
-            (or some) of the revisions in which a set of files was
-            modified in the filesystem.</para>
+          <para>obtenir les messages de propagation associés à toutes
+            (ou certaines) les révisions qui ont modifié un ensemble de
+            fichiers du système de fichiers ;</para>
          </listitem>
          <listitem>
-          <para>Generate a human-readable <quote>dump</quote> of the
-            filesystem—a complete representation of the revisions in
-            the filesystem.</para>
+          <para>générer des images (<quote>dumps</quote>) du système de
+            fichiers lisibles par l'utilisateur — ces images étant
+            des représentations complètes des révisions du système de
+            fichiers ;</para>
          </listitem>
          <listitem>
-          <para>Parse that dump format, loading the dumped revisions
-            into a different Subversion repository.</para>
+          <para>analyser ces images et les charger dans un autre dépôt
+            Subversion.</para>
          </listitem>
        </itemizedlist>

-      <para>As Subversion continues to evolve, the repository library
-        will grow with the filesystem library to offer increased
-        functionality and configurable option support.</para>
+      <para>Comme Subversion continue à évoluer, la bibliothèque du dépôt
+      grandit avec la bibliothèque du système de fichiers pour offrir
+      davantage de fonctionnalités et des options configurables.</para>

      </sect2>

      <!-- ===============================================================  
-->
      <sect2 id="svn.developer.layerlib.ra">
-      <title>Repository Access Layer</title>
-
-      <para>If the Subversion Repository layer is at <quote>the other
-        end of the line,</quote> the Repository Access (RA) layer is
-        the line itself.  Charged with marshaling data between the
-        client libraries and the repository, this layer includes the
-        <filename>libsvn_ra</filename> module loader library, the RA
-        modules themselves (which currently includes
-        <filename>libsvn_ra_neon</filename>,
-        <filename>libsvn_ra_local</filename>,
-        <filename>libsvn_ra_serf</filename>, and
-        <filename>libsvn_ra_svn</filename>), and any additional
-        libraries needed by one or more of those RA modules (such as
-        the <filename>mod_dav_svn</filename> Apache module or
-        <filename>libsvn_ra_svn</filename>'s server,
+      <title>Couche d'accès au dépôt</title>
+
+      <para>Si la couche Dépôt de Subversion est <quote>à l'autre bout
+        de la ligne</quote>, la couche d'accès au dépôt (RA pour
+        <quote>repository access</quote> en anglais) est la ligne en
+        tant que telle. Chargée d'organiser les données entre les
+        bibliothèques client et le dépôt, cette couche inclut la
+        bibliothèque de chargement du module
+        <filename>libsvn_ra</filename>, les modules RA eux-mêmes (qui
+        incluent à l'heure actuelle <filename>libsvn_ra_neon</filename>,
+        <filename>libsvn_ra_local</filename>,
+        <filename>libsvn_ra_serf</filename> et
+        <filename>libsvn_ra_svn</filename>) et toute bibliothèque
+        supplémentaire requise par un ou plusieurs de ces modules RA
+        (par exemple, le module Apache <filename>mod_dav_svn</filename>
+        ou le serveur de <filename>libsvn_ra_svn</filename>,
          <command>svnserve</command>).</para>

-      <para>Since Subversion uses URLs to identify its repository
-        resources, the protocol portion of the URL scheme (usually
-        <literal>file://</literal>, <literal>http://</literal>,
-        <literal>https://</literal>, <literal>svn://</literal>, or
-        <literal>svn+ssh://</literal>) is used to determine which RA
-        module will handle the communications.  Each module registers
-        a list of the protocols it knows how to <quote>speak</quote>
-        so that the RA loader can, at runtime, determine which module
-        to use for the task at hand.  You can determine which RA
-        modules are available to the Subversion command-line client,
-        and what protocols they claim to support, by running
-        <userinput>svn --version</userinput>:</para>
+      <para>Comme Subversion utilise les URL pour identifier les dépôts
+        à contacter, la partie de l'URL qui indique le protocole
+        (habituellement <literal>file://</literal>,
+        <literal>http://</literal>,
+        <literal>https://</literal>, <literal>svn://</literal> ou
+        <literal>svn+ssh://</literal>) est utilisée pour déterminer quel
+        module RA gère les communications. Chaque module indique la
+        liste des protocoles qu'il connaît afin que le chargeur RA
+        puisse déterminer, à l'exécution, quel module utiliser pour la
+        tâche en cours. Vous pouvez obtenir la liste des modules RA
+        disponibles pour votre client Subversion en ligne de commande,
+        ainsi que les protocoles qu'ils prennent en charge, en lançant
+        la commande <userinput>svn --version</userinput> :</para>

        <screen>
  $ svn --version
  svn, version 1.5.0 (r31699)
-   compiled Jun 18 2008, 09:57:36
+    compilé Jun 18 2008, 09:57:36

  Copyright (C) 2000-2008 CollabNet.
-Subversion is open source software, see http://subversion.tigris.org/
-This product includes software developed by CollabNet  
(http://www.Collab.Net/).
-
-The following repository access (RA) modules are available:
-
-* ra_neon : Module for accessing a repository via WebDAV protocol using  
Neon.
-  - handles 'http' scheme
-  - handles 'https' scheme
-* ra_svn : Module for accessing a repository using the svn network  
protocol.
-  - handles 'svn' scheme
-* ra_local : Module for accessing a repository on local disk.
-  - handles 'file' scheme
-* ra_serf : Module for accessing a repository via WebDAV protocol using  
serf.
-  - handles 'http' scheme
-  - handles 'https' scheme
-
-$
+Subversion est un logiciel libre, cf http://subversion.tigris.org/
+Il inclut du logiciel développé par CollabNet (http://www.Collab.Net/).
+
+Les modules d'accès à un dépôt (RA) suivants sont disponibles :
+
+* ra_neon : Module d'accès à un dépôt via le protocole WebDAV avec Neon.
+  - gère le schéma d'URL 'http'
+  - gère le schéma d'URL 'https'
+* ra_svn : Module d'accès à un dépôt avec le protocole réseau propre de  
svn.
+  - avec authentification Cyrus SASL
+  - gère le schéma d'URL 'svn'
+* ra_local : Module d'accès à un dépôt sur un disque local.
+  - gère le schéma d'URL 'file'
+* ra_serf : Module d'accès à un dépôt via le protocole WebDAV avec serf.
+  - gère le schéma d'URL 'http'
+  - gère le schéma d'URL 'https'
  </screen>

-      <para>The public API exported by the RA layer contains
-        functionality necessary for sending and receiving versioned
-        data to and from the repository.  And each of the available RA
-        plug-ins is able to perform that task using a specific
-        protocol—<filename>libsvn_ra_dav</filename> speaks
-        HTTP/WebDAV (optionally using SSL encryption) with an Apache
-        HTTP Server that is running the
-        <filename>mod_dav_svn</filename> Subversion server module;
-        <filename>libsvn_ra_svn</filename> speaks a custom network
-        protocol with the <command>svnserve</command> program; and so
-        on.</para>
-
-      <para>For those who wish to access a Subversion repository
-        using still another protocol, that is precisely why the
-        Repository Access layer is modularized!  Developers can simply
-        write a new library that implements the RA interface on one
-        side and communicates with the repository on the other.  Your
-        new library can use existing network protocols or you can
-        invent your own.  You could use interprocess communication
-        (IPC) calls, or—let's get crazy, shall we?—you
-        could even implement an email-based protocol.  Subversion
-        supplies the APIs; you supply the creativity.</para>
+      <para>L'API publique exportée par la couche RA contient les
+        fonctionnalités nécessaires pour envoyer des données suivies en
+        versions vers le dépôt et pour en recevoir. Chacun des greffons
+        RA disponibles est capable d'effectuer ces tâches en utilisant
+        un protocole particulier :<filename>libsvn_ra_dav</filename>
+        utilise le protocole HTTP/WebDAV (avec chiffrement SSL en
+        option) pour communiquer avec un serveur HTTP Apache sur lequel
+        fonctionne le module serveur Subversion
+        <filename>mod_dav_svn</filename> ;
+        <filename>libsvn_ra_svn</filename> utilise un protocole réseau
+        propre à Subversion pour communiquer avec le programme
+        <command>svnserve</command>, et ainsi de suite.</para>
+
+      <para>Ceux qui désirent accéder à un dépôt Subversion en utilisant
+        un autre protocole comprendront rapidement pourquoi la couche
+        d'accès au dépôt est modulaire ! Les développeurs peuvent
+        tout simplement écrire une nouvelle bibliothèque qui implémente
+        l'interface RA d'un côté et qui communique avec le dépôt de
+        l'autre. Votre nouvelle bibliothèque peut utiliser des
+        protocoles réseaux existants ou vous pouvez en inventer un
+        nouveau. Vous pourriez ainsi utiliser les communications
+        inter-processus (IPC pour <quote>interprocess
+        communication</quote> en anglais) ou même, soyons fou,
+        implémenter un protocole basé sur l'email. Subversion apporte
+        les API, à vous d'apporter la créativité.</para>

      </sect2>

      <!-- ===============================================================  
-->
      <sect2 id="svn.developer.layerlib.client">
-      <title>Client Layer</title>
-
-      <para>On the client side, the Subversion working copy is where
-        all the action takes place.  The bulk of functionality
-        implemented by the client-side libraries exists for the sole
-        purpose of managing working copies—directories full of
-        files and other subdirectories that serve as a sort of local,
-        editable <quote>reflection</quote> of one or more repository
-        locations—and propagating changes to and from the
-        Repository Access layer.</para>
-
-      <para>Subversion's working copy library,
-        <filename>libsvn_wc</filename>, is directly responsible for
-        managing the data in the working copies.  To accomplish this,
-        the library stores administrative information about each
-        working copy directory within a special subdirectory.  This
-        subdirectory, named <filename>.svn</filename>, is present in
-        each working copy directory and contains various other files
-        and directories that record state and provide a private
-        workspace for administrative action.  For those familiar with
-        CVS, this <filename>.svn</filename> subdirectory is similar in
-        purpose to the <filename>CVS</filename> administrative
-        directories found in CVS working copies.  For more information
-        about the <filename>.svn</filename> administrative area, see
-        <xref linkend="svn.developer.insidewc"/> later in this
-        chapter.</para>
-
-      <para>The Subversion client library,
-        <filename>libsvn_client</filename>, has the broadest
-        responsibility; its job is to mingle the functionality of the
-        working copy library with that of the Repository Access layer,
-        and then to provide the highest-level API to any application
-        that wishes to perform general revision control actions.  For
-        example, the function
-        <function>svn_client_checkout()</function> takes a URL as an
-        argument.  It passes this URL to the RA layer and opens an
-        authenticated session with a particular repository.  It then
-        asks the repository for a certain tree, and sends this tree
-        into the working copy library, which then writes a full
-        working copy to disk (<filename>.svn</filename> directories
-        and all).</para>
-
-      <para>The client library is designed to be used by any
-        application.  While the Subversion source code includes a
-        standard command-line client, it should be very easy to write
-        any number of GUI clients on top of the client library.  New
-        GUIs (or any new client, really) for Subversion need not be
-        clunky wrappers around the included command-line
-        client—they have full access via the
-        <filename>libsvn_client</filename> API to the same functionality,
-        data, and callback mechanisms that the command-line client
-        uses.  In fact, the Subversion source code tree contains a
-        small C program (which you can find at
-        <filename>tools/examples/minimal_client.c</filename>) that
-        exemplifies how to wield the Subversion API to create a simple
-        client program.</para>
+      <title>Couche client</title>
+
+      <para>Côté client, la copie de travail Subversion est l'endroit où
+        tout se passe. Le gros des fonctionnalités implémentées par les
+        bibliothèques client existe dans le seul but de gérer les copies
+        de travail locales — des répertoires pleins de fichiers et
+        d'autres sous-répertoires qui sont une sorte de copie locale et
+        modifiable d'un ou plusieurs dépôts — et de propager les
+        changements vers et depuis la couche d'accès au dépôt.</para>
+
+      <para>La bibliothèque de Subversion pour la copie de travail,
+        <filename>libsvn_wc</filename>, est directement responsable de
+        la gestion des données dans les copies de travail. Pour ce
+        faire, la bibliothèque stocke des données d'administration à
+        propos de chaque répertoire suivi en versions dans un
+        sous-répertoire spécial. Ce sous-répertoire, nommé
+        <filename>.svn</filename>, est présent dans chaque répertoire
+        d'une copie de travail ; il contient tout un tas de
+        fichiers et de répertoires qui enregistrent l'état du répertoire
+        suivi en versions et fournit un espace privé pour les actions
+        d'administration. Pour les habitués de CVS, ce sous-répertoire
+        <filename>.svn</filename> a des objectifs similaires aux
+        répertoires administratifs CVS que l'on trouve dans les copies
+        de travail CVS. Pour plus d'informations sur la zone
+        d'administration <filename>.svn</filename>, reportez-vous à
+        <xref linkend="svn.developer.insidewc"/>  plus loin dans ce
+        chapitre.</para>
+
+      <para>La bibliothèque client de Subversion,
+        <filename>libsvn_client</filename>, est celle qui a le plus de
+        responsabilités : son rôle est de mélanger les
+        fonctionnalités de la bibliothèque de la copie de travail avec
+        celles de la couche d'accès au dépôt (RA) afin de fournir l'API
+        de plus haut niveau, utilisable par n'importe quelle application
+        qui voudrait effectuer des actions générales de suivi de
+        versions. Par exemple, la fonction
+        <function>svn_client_checkout()</function> prend une URL en
+        argument. Elle passe cette URL à la couche RA et ouvre une
+        session authentifiée avec le dépôt concerné. Elle demande
+        ensuite au dépôt l'arborescence requise, envoie cette
+        arborescence à la bibliothèque de la copie de travail, qui
+        écrit alors une copie de travail complète sur le disque (les
+        répertoires <filename>.svn</filename> et tout).</para>
+
+      <para>La bibliothèque client est conçue pour être utilisée par
+        n'importe quelle application. Alors que le code source de
+        Subversion inclut un client standard en ligne de commande, le
+        but recherché est qu'il doit être très facile d'écrire un nombre
+        quelconque de clients utilisant une interface utilisateur
+        graphique (GUI en anglais) par dessus cette bibliothèque client.
+        Les nouvelles GUI (ou les nouveaux clients en fait) pour
+        Subversion n'ont aucune raison de n'être que des sur-couches au
+        client en ligne de commande : elles ont un accès total, via
+        l'API <filename>libsvn_client</filename>, aux mêmes
+        fonctionnalités, données et autres mécanismes que le client en
+        ligne de commande utilise. En fait, le code source de Subversion
+        contient un petit programme en C (que vous pouvez trouver dans
+        <filename>tools/examples/minimal_client.c</filename>) qui montre
+        comment utiliser en pratique l'API Subversion pour créer un
***The diff for this file has been truncated for email.***


More information about the svnbook-dev mailing list