[svnbook] r5238 committed - branches/1.8/fr/book/ch08-embedding-svn.xml
chris-nanteuil at users.sourceforge.net
chris-nanteuil at users.sourceforge.net
Sun Nov 27 04:46:29 CST 2016
Revision: 5238
http://sourceforge.net/p/svnbook/source/5238
Author: chris-nanteuil
Date: 2016-11-27 10:46:28 +0000 (Sun, 27 Nov 2016)
Log Message:
-----------
[fr] Chapter 8: translation in progress.
Modified Paths:
--------------
branches/1.8/fr/book/ch08-embedding-svn.xml
Modified: branches/1.8/fr/book/ch08-embedding-svn.xml
===================================================================
--- branches/1.8/fr/book/ch08-embedding-svn.xml 2016-11-24 22:03:48 UTC (rev 5237)
+++ branches/1.8/fr/book/ch08-embedding-svn.xml 2016-11-27 10:46:28 UTC (rev 5238)
@@ -1,8 +1,13 @@
<!-- -*- sgml -*- -->
<chapter id="svn.developer">
+<!--
<title>Embedding Subversion</title>
+-->
+ <title>Intégration de Subversion</title>
+
+<!--
<para>
<indexterm>
<primary>API</primary>
@@ -19,7 +24,31 @@
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>
+ <indexterm>
+ <primary>API</primary>
+ </indexterm>
+ <indexterm>
+ <primary>Application Programming Interface</primary>
+ <see>API</see>
+ </indexterm>
+ <indexterm>
+ <primary>Interface de Programmation</primary>
+ <see>API</see>
+ </indexterm>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 <firstterm>interface de
+ programmation</firstterm> (API, <foreignphrase>application programming
+ interface</foreignphrase> 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. De 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>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
@@ -31,13 +60,30 @@
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>
+-->
+ <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>
+-->
+ <title>Organisation des bibliothèques en couches successives</title>
+<!--
<para>
<indexterm>
<primary>API</primary>
@@ -52,84 +98,159 @@
extensionless Unix library names
(<filename>libsvn_fs</filename>, <filename>libsvn_wc</filename>,
<filename>mod_dav_svn</filename>, etc.).</para>
+-->
+ <para>
+ <indexterm>
+ <primary>API</primary>
+ <secondary>couches</secondary>
+ </indexterm>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 <foreignphrase>Repository
+ Access</foreignphrase> 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_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
+ le protocole 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 locale ;</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
@@ -139,7 +260,19 @@
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>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>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,
@@ -156,7 +289,26 @@
libraries that implement the same functionality in different
ways—both are plug-ins to the common
<filename>libsvn_fs</filename> library.</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_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 trois 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>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
@@ -171,11 +323,32 @@
proliferation of available Subversion clients and IDE
integrations and, by extension, to the tremendous adoption rate
of Subversion itself.</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 (<foreignphrase>IDE</foreignphrase> 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>
+-->
+ <title>Couche dépôt</title>
+<!--
<para>
<indexterm>
<primary>API</primary>
@@ -194,7 +367,29 @@
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>
+ <indexterm>
+ <primary>API</primary>
+ <secondary>couches</secondary>
+ <tertiary>couche dépôt</tertiary>
+ </indexterm>Quand nous faisons référence à la<firstterm>couche
+ dépôt</firstterm> 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 accède <foreignphrase>via</foreignphrase>
+ <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
+ <foreignphrase>via</foreignphrase> 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>
<indexterm>
<primary>repositories</primary>
@@ -219,7 +414,37 @@
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>
+ <indexterm>
+ <primary>dépôts</primary>
+ <secondary>système de fichiers</secondary>
+ </indexterm>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 (<foreignphrase>Open Database Connectivity</foreignphrase>,
+ 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>
<indexterm>
<primary>repositories</primary>
@@ -239,34 +464,87 @@
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>
+ <indexterm>
+ <primary>dépôts</primary>
+ <secondary>arborescence du système de fichiers</secondary>
+ </indexterm>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 de 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>
+
+<!--
<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>
+-->
+ <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 terminé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>
+-->
+ <title>Digression sur les transactions</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
@@ -279,7 +557,22 @@
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>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>Database transactions generally encompass small
operations related specifically to the modification of data
in the database itself (such as changing the contents of a
@@ -293,7 +586,22 @@
creation of a Subversion transaction fails, the database will
look as though we had never attempted that creation in the first
place)!</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>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
@@ -301,9 +609,18 @@
when you start digging into the implementation of the
filesystem itself that such things become visible (or
interesting).</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
@@ -314,7 +631,21 @@
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>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>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
@@ -323,12 +654,26 @@
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>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
@@ -349,12 +694,37 @@
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>Prise en compte du temps — la troisième dimension de la
+ gestion de versions !</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
@@ -365,7 +735,20 @@
and directory versioning support, Subversion wants
more—and that is where <filename>libsvn_repos</filename>
comes in.</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 gestion des 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 si
+ Subversion lui-même est intéressé par une telle fonctionnalité. Mais,
+ bien que cette API soit suffisante pour effectuer une gestion de
+ 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>The Subversion repository library
(<filename>libsvn_repos</filename>) sits (logically speaking)
atop the <filename>libsvn_fs</filename> API, providing
@@ -381,41 +764,96 @@
implementing a versioning filesystem, so it lives in the
repository wrapper library.</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>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>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
+ les révisions (ou certaines) 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>
@@ -511,7 +949,7 @@
<!-- =============================================================== -->
<sect2 id="svn.developer.layerlib.client">
<title>Client Layer</title>
-
+
<para>
<indexterm>
<primary>API</primary>
@@ -1090,7 +1528,7 @@
# Print the name of this path.
print directory + "/"
-
+
# Get the directory entries for DIRECTORY.
entries = svn.fs.svn_fs_dir_entries(root, directory)
@@ -1112,7 +1550,7 @@
def crawl_youngest(repos_path):
"""Open the repository at REPOS_PATH, and recursively crawl its
youngest revision."""
-
+
# Open the repository at REPOS_PATH, and get a reference to its
# versioning filesystem.
repos_obj = svn.repos.svn_repos_open(repos_path)
@@ -1120,13 +1558,13 @@
# Query the current youngest revision.
youngest_rev = svn.fs.svn_fs_youngest_rev(fs_obj)
-
+
# Open a root object representing the youngest (HEAD) revision.
root_obj = svn.fs.svn_fs_revision_root(fs_obj, youngest_rev)
# Do the recursive crawl.
crawl_filesystem_dir(root_obj, "")
-
+
if __name__ == "__main__":
# Check for sane usage.
if len(sys.argv) != 2:
@@ -1213,7 +1651,7 @@
if prefix is not None:
prefix_text = prefix + " "
print '%s%s%s %s' % (prefix_text, text_status, prop_status, path)
-
+
# Do the status crawl, using _status_callback() as our callback function.
revision = svn.core.svn_opt_revision_t()
revision.type = svn.core.svn_opt_revision_head
@@ -1234,7 +1672,7 @@
--verbose, -v : Show all statuses, even uninteresting ones
""" % (os.path.basename(sys.argv[0])))
sys.exit(errorcode)
-
+
if __name__ == '__main__':
# Parse command-line options.
try:
@@ -1253,7 +1691,7 @@
verbose = 1
if len(args) != 1:
usage_and_exit(2)
-
+
# Canonicalize the working copy path.
wc_path = svn.core.svn_dirent_canonicalize(args[0])
More information about the svnbook-dev
mailing list