[svnbook commit] r3501 - * trunk/src/de/book/ch08-embedding-svn.xml

codesite-noreply at google.com codesite-noreply at google.com
Mon May 18 01:41:29 CDT 2009


Author: jmfelderhoff at gmx.eu
Date: Sun May 17 23:20:53 2009
New Revision: 3501

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

Log:
* trunk/src/de/book/ch08-embedding-svn.xml
   - Fixes ticket #247 (cf. http://www.svnbook.de/report/6).


Modified: trunk/src/de/book/ch08-embedding-svn.xml
==============================================================================
--- trunk/src/de/book/ch08-embedding-svn.xml	(original)
+++ trunk/src/de/book/ch08-embedding-svn.xml	Sun May 17 23:20:53 2009
@@ -320,8 +320,12 @@

      <!-- ===============================================================  
-->
      <sect2 id="svn.developer.layerlib.repos">
+<!--
        <title>Repository Layer</title>
+-->
+      <title>Repository-Schicht</title>

+<!--
        <para>When referring to Subversion's Repository layer, we're
          generally talking about two basic concepts—the versioned
          filesystem implementation (accessed via
@@ -335,7 +339,24 @@
          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>Wenn wir uns auf die Repository-Schicht von Subversion
+        beziehen, reden wir üblicherweise über zwei grundlegende
+        Konzepte – die Implementierung des versionierten
+        Dateisystems (auf das mittels <filename>libsvn_fs</filename>
+        zugegriffen wird, unterstützt durch dessen Plug-Ins
+        <filename>libsvn_fs_base</filename> und
+        <filename>libsvn_fs_fs</filename>) und die Logik des
+        Repositorys, die es umgibt (implementiert in
+        <filename>libsvn_repos</filename>). Diese Bibliotheken liefern
+        die Speicher- und Auswertungsmechanismen für die verschiedenen
+        Revisionen Ihrer versionskontrollierten Daten. Diese Schicht
+        ist mit der Client-Schicht über die
+        Repository-Zugriffs-Schicht verbunden und stellt, aus der
+        Sicht des Benutzers von Subversion, das <quote>andere Ende der
+        Leitung</quote> dar.</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.
@@ -356,7 +377,31 @@
          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>Das Dateisystem von Subversion ist kein Dateisystem auf
+        Kernel-Ebene, das im Betriebssystem installiert würde (so wie
+        Linux ext3 oder NTFS), sondern ein virtuelles Dateisystem.
+        Anstatt <quote>Dateien</quote> und
+        <quote>Verzeichnisse</quote> als echte Dateien und
+        Verzeichnisse abzulegen (in denen Sie mit Ihrem bevorzugten
+        Shell-Programm navigieren können), verwendet es eins von zwei
+        verfügbaren abstrakten Speicherungsverfahren – entweder
+        eine Berkeley-DB-Datenbankumgebung oder eine Repräsentation
+        über einfache Dateien. (Um mehr über die zwei Verfahren
+        kennenzulernen, siehe <xref
+        linkend="svn.reposadmin.basics.backends"/>.) Es hat seitens
+        der Entwicklergemeinschaft ein beträchtliches Interesse
+        bestanden, künftigen Versionen von Subversion die Fähigkeit zu
+        verleihen, andere Datenbanksysteme zu verwenden, etwa über
+        einen Mechanismus wie Open Database Connectivity (ODBC).
+        Tatsächlich hat Google etwas ähliches gemacht, bevor der
+        Dienst Google Code Project Hosting gestartet wurde: Mitte 2006
+        wurde angekündigt, dass Mitarbeiter des Open-Source-Teams ein
+        neues proprietäres Dateisystem-Plug-In für Subversion
+        geschrieben hätten, welches Googles höchstskalierbare
+        Bigtable-Datenbank zum Speichern verwendet.</para>

+<!--
        <para>The filesystem API exported by
          <filename>libsvn_fs</filename> contains the kinds of
          functionality you would expect from any other filesystem
@@ -372,34 +417,79 @@
          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>Die von <filename>libsvn_fs</filename> exportierte
+        Dateisystem-Programmierschnittstelle enthält die Funktionen,
+        die Sie auch von jeder anderen Programmierschnittstelle für
+        ein Dateisystem erwarten würden – Sie können Dateien und
+        Verzeichnisse anlegen und löschen, kopieren und verschieben,
+        den Inhalt verändern usw. Sie besitzt auch Funktionen, die
+        nicht so verbreitet sind, wie etwa die Fähigkeit, Metadaten
+        (<quote>Propertys</quote>) an jede Datei oder jedes
+        Verzeichnis anzufügen, zu verändern oder zu entfernen. Zudem
+        ist das Dateisystem von Subversion ein versioniertes
+        Dateisystem, d.h., während Sie Ihren Verzeichnisbaum ändern,
+        merkt sich Subversion, wie er vor Ihren Änderungen ausgesehen
+        hat. Und vor den vorhergehenden Änderungen. Und davor. Und so
+        weiter durch die gesamte versionierte Zeitachse bis zu dem
+        Moment (und kurz davor), an dem Sie das erste Mal etwas dem
+        Dateisystem hinzugefügt hatten.</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>Alle Änderungen, die Sie an Ihrem Baum vornehmen,
+        geschehen im Kontext einer Subversion-Übergabe-Transaktion.
+        Das Folgende ist eine vereinfachte allgemeine Vorgehensweise
+        beim Ändern Ihres Dateisystems:</para>

        <orderedlist>
          <listitem>
+<!--
            <para>Begin a Subversion commit transaction.</para>
+-->
+          <para>Eine Subversion-Übergabe-Transaktion starten.</para>
          </listitem>
          <listitem>
+<!--
            <para>Make your changes (adds, deletes, property
              modifications, etc.).</para>
+-->
+          <para>Nehmen Sie Ihre Änderungen vor (Ergänzungen,
+            Löschungen, Änderungen an Propertys usw.).</para>
          </listitem>
          <listitem>
+<!--
            <para>Commit your transaction.</para>
+-->
+          <para>Schließen Sie Ihre Transaktion ab.</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>Sobald Sie Ihre Transaktion abgeschlossen haben, werden
+        Ihre Änderungen am Dateisystem dauerhaft als historische
+        Artefakte gespeichert. Jeder dieser Zyklen erzeugt eine
+        einzelne neue Revision Ihres Baums, und jede Revision ist für
+        immer verfügbar als unveränderliche Momentaufnahme <quote>der
+        Dinge, wie sie mal waren</quote>.</para>

        <sidebar>
+<!--
          <title>The Transaction Distraction</title>
+-->
+        <title>Die Transaktionsablenkung</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
@@ -412,7 +502,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>Der Begriff einer Subversion-Transaktion kann leicht mit
+          der Transaktionsunterstützung der darunterliegenden
+          Datenbank verwechselt werden, besonders bei der großen Nähe
+          der ersteren zum Berkeley-DB-Datenbank-Code in
+          <filename>libsvn_fs_base</filename>. Beide Transaktionstypen
+          dienen der Atomizität und Isolation. Mit anderen Worten:
+          Transaktionen ermöglichen Ihnen, eine Serie von Aktionen
+          durchzuführen, bei denen entweder alle oder keine ausgeführt
+          wird – entweder werden alle Aktionen erfolgreich
+          abgeschlossen oder <emphasis>keine</emphasis> wird überhaupt
+          ausgeführt – und das auf eine Weise, dass andere
+          Prozesse nicht behindert werden, die auf den Daten
+          arbeiten.</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
@@ -426,7 +531,24 @@
            creation of a Subversion transaction fails, the database will
            look as though we had never attempted that creation in the first
            place)!</para>
+-->
+        <para>Datenbanktransaktionen umfassen im Allgemeinen kleinere
+          Operationen, die in Zusammenhang mit der Änderung von Daten
+          in der Datenbank selbst stehen (etwa die Änderung einer
+          Tabellenzeile). Transaktionen von Subversion haben einen
+          größeren Umfang und umfassen Operationen auf einer höheren
+          Ebene, so etwa Änderungen an einer Menge aus Dateien und
+          Verzeichnissen, die als nächste Revision im Dateisystembaum
+          gespeichert werden sollen. Sollte das nicht bereits genug
+          Verwirrung gestiftet haben, betrachten Sie die Tatsache,
+          dass Subversion eine Datenbanktransaktion während der
+          Erstellung einer Subversion-Transaktion benutzt (so dass
+          beim Misslingen der Erstellung der Subversion-Transaktion
+          die Datenbank in dem Zustand verbleibt, als hätten wir
+          niemals versucht, eine Subversion-Transaktion zu
+          starten)!</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
@@ -434,9 +556,18 @@
            when you start digging into the implementation of the
            filesystem itself that such things become visible (or
            interesting).</para>
+-->
+        <para>Glücklicherweise bleibt den Benutzern der
+          Dateisystem-API die Transaktionsunterstützung des
+          Datrenbanksystems fast vollständig verborgen (wie es von
+          einem ordentlich modularisierten Bibliotheksschema auch
+          erwartet werden kann). Nur wenn Sie anfangen, in der
+          Implementierung des Dateisystems herumzuwühlen, werden diese
+          Dinge sichtbar (oder interessant).</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
@@ -447,7 +578,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>Die meisten von der Dateisystemschnittstellen angebotenen
+        Funktionen drehen sich um Aktionen, die auf einzelnen
+        Dateisystempfaden stattfinden. Von außerhalb des Dateisystems
+        betrachtet heißt das, dass der Hauptmechanismus zur
+        Beschreibung und Handhabung einzelner Datei- und
+        Verzeichnisrevisionen über Pfadzeichenketten wie
+        <filename>/foo/bar</filename> erfolgt, genauso, als ob Sie
+        Dateien und Verzeichnisse über Ihr bevorzugtes Shell-Programm
+        ansprechen würden. Sie fügen neue Dateien und Verzeichnisse
+        hinzu, indem Sie die künftigen Pfade an die passenden
+        API-Funktionen übergeben. Sie können Informationen über den
+        gleichen Mechanismus abrufen.</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
@@ -456,12 +601,25 @@
          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>Im Gegensatz zu den meisten Dateisystemen reicht jedoch
+        ein Pfad alleine nicht aus, um in Subversion eine Datei oder
+        ein Verzeichnis zu identifizieren. Stellen Sie sich einen
+        Verzeichnisbaum als ein zweidimensionales System vor, in dem
+        Nachbarknoten eine Art horizontale und die Unterverzeichnisse
+        eines Knotens eine vertikale Bewegung repräsentieren. <xref
+        linkend="svn.developer.layerlib.repos.dia-1"/> zeigt genau das
+        als typische Repräsentierung eines Baums.</para>

        <figure id="svn.developer.layerlib.repos.dia-1">
+<!--
          <title>Files and directories in two dimensions</title>
+-->
+        <title>Dateien und Verzeichnisse in zwei Dimensionen</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!
@@ -484,12 +642,41 @@
          linkend="svn.developer.layerlib.repos.dia-2"/> shows revision
          history as an added dimension to the Subversion filesystem
          universe.</para>
+-->
+      <para>Der Unterschied ist hier, dass das Dateisystem von
+        Subversion eine raffinierte dritte Dimension hat, die den
+        meisten Dateisystemen fehlt – Zeit!
+        <footnote>
+          <para>Wir sind uns bewusst, dass das für
+            Science-Fiction-Fans, die lange Zeit davon ausgegangen
+            sind, dass Zeit eigentlich die <emphasis>vierte</emphasis>
+            Dimension ist, ein Schock sein kann, und wir bitten um
+            Entschuldigung, falls die Geltendmachung einer
+            unterschiedlichen Theorie unsererseits zu einem seelischen
+            Schock führen sollte.</para>
+        </footnote>
+        Fast jede Funktion der Dateisystemschnittstelle, die ein
+        <parameter>path</parameter>-Argument erwartet, benötigt auch
+        ein <parameter>root</parameter>-Argument. Dieses Argument vom
+        Typ  <literal>svn_fs_root_t</literal> beschreibt entweder eine
+        Revision oder eine Subversion-Transaktion (welche einfach eine
+        Revision in Arbeit ist) und stellt die dritte Dimension des
+        Kontexts zur Verfügung, die benötigt wird, um den Unterschied
+        zwischen <filename>/foo/bar</filename> in Revision 32 und
+        demselben Pfad in Revision 98 zu verstehen. <xref
+        linkend="svn.developer.layerlib.repos.dia-2"/> zeigt die
+        Revisionsgeschichte als eine zusätzliche Dimension im
+        Subversion-Dateisystem-Universum.</para>

        <figure id="svn.developer.layerlib.repos.dia-2">
+<!--
          <title>Versioning time—the third dimension!</title>
+-->
+        <title>Versionierung der Zeit – die dritte 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
@@ -500,7 +687,20 @@
          and directory versioning support, Subversion wants
          more—and that is where <filename>libsvn_repos</filename>
          comes in.</para>
+-->
+      <para>Wie bereits erwähnt, mutet die
+        <filename>libsvn_fs</filename>-API wie jedes andere
+        Dateisystem an, außer dass es diese wundervolle
+        Versionierungsmöglichkeit hat. Sie wurde entworfen, um für
+        jedes Programm nutzbar zu sein, das an einem versionierten
+        Dateisystem interessiert ist. Nicht nur zufällig hat
+        Subversion selbst Interesse an dieser Funktion. Doch obwohl
+        die Unterstützung der Dateisystemschnittstelle ausreichend für
+        die einfache Versionierung von Dateien und Verzeichnissen ist,
+        braucht Subversion mehr – und hier hat
+        <filename>libsvn_repos</filename> seinen Auftritt.</para>

+<!--
        <para>The Subversion repository library
          (<filename>libsvn_repos</filename>) sits (logically speaking)
          atop the <filename>libsvn_fs</filename> API, providing
@@ -515,42 +715,95 @@
          them.  A repository hook system is not strictly related to
          implementing a versioning filesystem, so it lives in the
          repository wrapper library.</para>
-
+-->
+      <para>Die Subversion-Repository-Bibliothek
+        (<filename>libsvn_repos</filename>) sitzt (logisch) oberhalb
+        der <filename>libsvn_fs</filename>-API und stellt zusätzliche
+        Funktionen zur Verfügung, die über die grundlegende Logik
+        eines versionierten Dateisystem hinausgehen. Sie umhüllt nicht
+        alle Dateisystemfunktionen vollständig – lediglich
+        bestimmte größere Scritte im allgemeinen Zyklus der
+        Dateisystemaktivität. Einige dieser Schritte umfassen die
+        Erzeugung und den Abschluss von Subversion-Transaktionen und
+        die Änderung von Revision-Propertys. Diese besonderen
+        Ereignisse werden durch die Repository-Schicht gekapselt, da
+        mit ihnen Hooks verknüpft sind. Ein System mit
+        Repository-Hooks hat strenggenommen nichts mit der
+        Implementierung eines versionierten Dateisystems zu tun, so
+        dass es in der Repository-Bibliothek untergebracht ist.</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>Der Hook-Mechanismus ist aber nur ein Grund für die
+        Abstraktion einer eigenständigen Repository-Bibliothek vom
+        Rest des Dateisystemcodes. Die API
+        <filename>libsvn_repos</filename> stellt mehrere andere
+        wichtige Werkzeuge für Subversion zur Verfügung. Darunter
+        fallen Fähigkeiten, um</para>

        <itemizedlist>
          <listitem>
+<!--
            <para>Create, open, destroy, and perform recovery steps on a
              Subversion repository and the filesystem included in that
              repository.</para>
+-->
+          <para>ein Subversion-Repository und das darin enthaltene
+            Dateisystem zu erzeugen, zu öffnen, zu zerstören und
+            hierauf Schritte zur Wiederherstellung auszuführen.</para>
          </listitem>
          <listitem>
+<!--
            <para>Describe the differences between two filesystem
              trees.</para>
+-->
+          <para>die Unterschiede zwischen zwei Dateisystem-Bäumen zu
+            beschreiben.</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>die Übergabe-Protokollnachrichten aller (oder einiger)
+            Revisionen abzurufen, in denen eine Menge aus Dateien im
+            Dateisystem verändert wurde.</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>einen menschenlesbaren <quote>Auszug</quote> des
+            Dateisystems zu erzeugen — eine vollständige
+            Repräsentierung der Revisionen im Dateisystem.</para>
          </listitem>
          <listitem>
+<!--
            <para>Parse that dump format, loading the dumped revisions
              into a different Subversion repository.</para>
+-->
+          <para>dieses Auszugsformat zu lesen und die Revisionen in
+            ein anderes Subversion-Repository zu laden.</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>Während sich Subversion weiterentwickelt, wird die
+        Repository-Bibliothek gemeinsam mit der Dateisystem-Bibliothek
+        wachsen und erweiterte Funktionen und konfigurierbare Optionen
+        unterstützen.</para>

      </sect2>



More information about the svnbook-dev mailing list