[svnbook] r4969 committed - German translation.

svnbook at googlecode.com svnbook at googlecode.com
Tue Feb 3 06:29:43 CST 2015


Revision: 4969
Author:   jmfelderhoff at gmx.eu
Date:     Tue Feb  3 12:29:28 2015 UTC
Log:      German translation.
https://code.google.com/p/svnbook/source/detail?r=4969

Modified:
  /branches/1.8/de/book/ch05-repository-admin.xml

=======================================
--- /branches/1.8/de/book/ch05-repository-admin.xml	Tue Nov 25 15:14:00  
2014 UTC
+++ /branches/1.8/de/book/ch05-repository-admin.xml	Tue Feb  3 12:29:28  
2015 UTC
@@ -1,3 +1,5 @@
+<!-- -*- sgml -*- -->
+
  <chapter id="svn.reposadmin">
  <!--
    <title>Repository Administration</title>
@@ -105,8 +107,8 @@
        nuts-and-bolts perspective is sufficient to reveal the basic
        components of the repository:</para>
  -->
-    <para>Mit den Augen eines typischen Dateibrowsers (wie Windows
-      Explorer) oder von kommandozeilenorientierten
+    <para>Mit den Augen eines typischen Datei-Browsers (wie Windows
+      Explorer) oder von kommandozeilen-orientierten
        Dateisystem-Navigationswerkzeugen ist das Subversion-Projektarchiv
        bloß ein weiteres gewöhnliches Verzeichnis voller Zeugs. Es gibt
        einige Unterverzeichnisse mit Konfigurationsdateien, die für
@@ -132,7 +134,7 @@
        elsewhere in this and other chapters.)</para>
  -->
      <para>Hier ist ein schneller, oberflächlicher Überblick über das,
-      was Sie in diesem Verzeichnislisting sehen. (Verzetteln Sie sich
+      was Sie in diesem Verzeichnisauflistung sehen. (Verzetteln Sie sich
        nicht mit den Fachausdrücken – eine detaillierte
        Behandlung dieser Komponenten erfolgt an anderer Stelle in
        diesem und in anderen Kapiteln.)</para>
@@ -230,10 +232,15 @@

      <note>
  <!--
-      <para>Prior to Subversion 1.5, the on-disk repository structure
-        also always contained a <filename>dav</filename> subdirectory.
-        <filename>mod_dav_svn</filename> used this directory to store
-        information about
+      <para>
+
+        <indexterm>
+          <primary>WebDAV</primary>
+          <secondary>activities</secondary>
+        </indexterm>Prior to Subversion 1.5, the on-disk repository
+        structure also always contained a <filename>dav</filename>
+        subdirectory. <filename>mod_dav_svn</filename> used this
+        directory to store information about
          WebDAV <firstterm>activities</firstterm>—mappings of
          high-level WebDAV protocol concepts to Subversion commit
          transactions.  Subversion 1.5 changed that behavior, moving
@@ -243,11 +250,14 @@
          a <filename>dav</filename> subdirectory
          unless <filename>mod_dav_svn</filename> is in use and hasn't
          been configured to store its activities database elsewhere.
-        See <xref linkend="svn.serverconfig.httpd.ref.mod_dav_svn"/> in
-        <xref linkend="svn.ref"/> for more information.</para>
-    </note>
+        See <xref linkend="svn.serverconfig.httpd.ref.mod_dav_svn" />
+        for more information.</para>
  -->
-      <para>Vor Subversion 1.5 besaß die Projektarchiv-Struktur auf
+      <para>
+        <indexterm>
+          <primary>WebDAV</primary>
+          <secondary>Aktivitäten</secondary>
+        </indexterm>Vor Subversion 1.5 besaß die Projektarchiv-Struktur auf
          der Festplatte ein Unterverzeichnis <filename>dav</filename>.
          <filename>mod_dav_svn</filename> verwendete dieses
          Verzeichnis, um Informationen über WebDAV
@@ -263,7 +273,7 @@
          wurde nicht dergestalt konfiguriert, dass seine
          Aktivitäten-Datenbank an einem anderen Ort abgelegt wird.
          Siehe <xref linkend="svn.serverconfig.httpd.ref.mod_dav_svn"/>
-        in <xref linkend="svn.ref"/> für weitere Informationen.</para>
+        für weitere Informationen.</para>
      </note>

  <!--
@@ -359,7 +369,7 @@
          <para>Which of the available types of data store do you want
            to use?</para>
  -->
-        <para>Welche der verfügbaren Datenspeicherungsarten möchten
+        <para>Welche der verfügbaren Arten von Datenspeicherung möchten
            Sie verwenden?</para>
        </listitem>
      </itemizedlist>
@@ -438,7 +448,7 @@
          und zum anschließenden Laden nach einer inkompatiblen neuen
          Version von Subversion gibt usw. Sie können Daten auch einfach
          zwischen Projekten verschieben, ohne historische
-        Versionierungsinformationen zu verlieren.</para>
+        Versionierungs=Informationen zu verlieren.</para>

  <!--
        <para>The downside of using a single repository is that
@@ -468,7 +478,7 @@
          Projektarchivs ist, dass unterschiedliche Projekte auch
          unterschiedliche Anforderungen hinsichtlich der
          Projektarchiv-Ereignis-Trigger haben, wie etwa
-        Benachrichtigungs-E-Mails bei Commits an unterschiedliche
+        Benachrichtigungs-E-Mails bei Übertragungen an unterschiedliche
          Verteiler, oder unterschiedliche Definitionen dazu, was eine
          berechtigte Übergabe ist und was nicht. Das sind natürlich
          keine unüberwindbaren Probleme – es bedeutet nur, dass
@@ -539,7 +549,7 @@
  -->
        <para>Nachdem Sie entschieden haben, wie Sie Ihre Projekte in
          Projektarchive aufteilen, möchten Sie sich nun vielleicht
-        Gedanken darüber machen, welche Verzeichnishierarchien Sie im
+        Gedanken darüber machen, welche Verzeichnis=Hierarchien Sie im
          Projektarchiv anlegen wollen. Da Subversion zum Verzweigen und
          Etikettieren reguläre Verzeichniskopien verwendet (siehe <xref
          linkend="svn.branchmerge"/>), empfiehlt die
@@ -741,7 +751,7 @@
          (Benutzer hinter Ihrer Firmen-Firewall oder die weite Welt im
          offenen Netz), welche zusätzlichen Dienste Sie im Zusammenhang
          mit Subversion anbieten wollen (Schnittstellen zum Stöbern im
-        Projektarchiv, Übergabebenachrichtigungen per E-Mail usw.), Ihre
+        Projektarchiv, Übergabe-Benachrichtigungen per E-Mail usw.), Ihre
          Sicherungsstrategie und vieles mehr.</para>

  <!--
@@ -761,14 +771,14 @@
          <xref linkend="svn.serverconfig" /> behandeln; jedoch möchten
          wir an dieser Stelle kurz darauf hinweisen, dass die Antworten
          auf einige der anderen Fragen zur Folge haben, dass Sie bei
-        der Entscheidung über den Speicherorte für das Projektarchiv
+        der Entscheidung über den Speicherort für das Projektarchiv
          keine freie Wahl mehr haben.  Beispielsweise könnten bestimmte
          Einsatzumgebungen erfordern, dass von mehreren Rechnern über
          ein freigegebenes Dateisystem auf das Projektarchiv zugegriffen
          werden muss, so dass (wie Sie im nächsten Abschnitt lesen
          werden) die Wahl der dem Projektarchiv zugrunde liegenden
          Datenspeicherung gar keine Wahl mehr ist, da nur eine der
-        verfügbaren Datenspeicherungsverfahren in dieser Umgebung
+        verfügbaren Datenspeicherungs-Verfahren in dieser Umgebung
          funktionieren wird.</para>

  <!--
@@ -794,7 +804,21 @@
        <title>Auswahl der Datenspeicherung</title>

  <!--
-      <para>Subversion provides two options for the
+      <para>
+        <indexterm>
+          <primary>FSFS</primary>
+        </indexterm>
+        <indexterm>
+          <primary>Berkeley DB</primary>
+        </indexterm>
+        <indexterm>
+          <primary>BDB</primary>
+          <see>Berkeley DB</see>
+        </indexterm>
+        <indexterm>
+          <primary>repositories</primary>
+          <secondary>filesystem</secondary>
+        </indexterm>Subversion provides two options for the
          type of underlying data store—often referred to as
          <quote>the backend</quote> or, somewhat confusingly,
          <quote>the (versioned) filesystem</quote>—that each
@@ -814,13 +838,27 @@
          filesystem directly—rather than via a database library
          or some other abstraction layer—to store data.</para>
  -->
-      <para>Subversion unterstützt zwei Optionen für
-        das zugrunde liegende Datenspeicherungsverfahren – oft
+      <para>
+        <indexterm>
+          <primary>FSFS</primary>
+        </indexterm>
+        <indexterm>
+          <primary>Berkeley DB</primary>
+        </indexterm>
+        <indexterm>
+          <primary>BDB</primary>
+          <see>Berkeley DB</see>
+        </indexterm>
+        <indexterm>
+          <primary>Projektarchive</primary>
+          <secondary>Dateisystem</secondary>
+        </indexterm>Subversion unterstützt zwei Optionen für
+        das zugrunde liegende Datenspeicherungs=Verfahren – oft
          bezeichnet als <quote>das Backend</quote> oder, etwas
          verwirrend, <quote>das (versionierte) Dateisystem</quote>
          — welches jedes Projektarchiv verwendet. Das eine
          Verfahren speichert alles in einer Berkeley-DB- (oder BDB-)
-        Datenbankumgebung; Projektarchive, die dieses Verfahren
+        Datenbank-Umgebung; Projektarchive, die dieses Verfahren
          verwenden, werden oft <quote>BDB-basiert</quote> genannt. Das
          andere Verfahren speichert die Daten in gewöhnlichen, flachen
          Dateien, die ein spezielles Format verwenden. Unter
@@ -831,7 +869,7 @@
          <quote>eff-ess-eff-ess</quote> denkt)</para> </footnote>
          eingebürgert – eine Implementierung eines versionierten
          Dateisystems, dass direkt das Dateisystem des Betriebssystems
-        verwendet – statt einer Datenbankbibliothek oder einer
+        verwendet – statt einer Datenbank-Bibliothek oder einer
          anderen Abstraktionsebene – um Daten zu speichern</para>

  <!--
@@ -1071,14 +1109,20 @@
          <title>Berkeley DB</title>

  <!--
-        <para>When the initial design phase of Subversion was in
+        <para>
+          <indexterm>
+            <primary>Berkeley DB</primary>
+          </indexterm>When the initial design phase of Subversion was in
            progress, the developers decided to use Berkeley DB for a
            variety of reasons, including its open source license,
            transaction support, reliability, performance, API
            simplicity, thread safety, support for cursors, and so
            on.</para>
  -->
-        <para>In der anfänglichen Entwurfsphase von Subversion
+        <para>
+          <indexterm>
+            <primary>Berkeley DB</primary>
+          </indexterm>In der anfänglichen Entwurfsphase von Subversion
            entschieden sich die Entwickler aus einer Reihe von Gründen,
            Berkeley DB zu verwenden. Hierzu zählen die quelloffene
            Lizenz, Transaktionsunterstützung, Zuverlässigkeit,
@@ -1130,7 +1174,7 @@
  -->
          <para>Eine weitere großartige Funktion von Berkeley DB sind
            <firstterm>Hot Backups</firstterm> – die Fähigkeit,
-          die Datenbankumgebung zu sichern, ohne sie <quote>vom
+          die Datenbank-Umgebung zu sichern, ohne sie <quote>vom
            Netz</quote> zu nehmen. Wir besprechen später in diesem
            Kapitel, wie Sie Ihr Projektarchiv sichern (in <xref
            linkend="svn.reposadmin.maint.backup"/>), doch sollten die
@@ -1154,7 +1198,7 @@
  -->
          <para>Bei Berkeley DB handelt es sich auch um ein sehr
            zuverlässiges Datenbanksystem, wenn es richtig verwendet
-          wird. Subversion benutzt das Protokollierungssystem von
+          wird. Subversion benutzt das Protokollierungs-System von
            Berkeley DB, was bedeutet, dass die Datenbank zunächst eine
            Beschreibung der Veränderungen in Protokolldateien auf der
            Platte schreibt, bevor die Veränderungen selbst durchgeführt
@@ -1188,7 +1232,7 @@
            können nicht einfach ein unter Unix erzeugtes
            Subversion-Projektarchiv auf ein Windows-System kopieren und
            erwarten, dass es funktioniert. Obwohl ein Großteil des
-          Berkeley-DB-Datenbankformats architekturunabhängig ist, sind
+          Berkeley-DB-Datenbank-Formats architektur-unabhängig ist, sind
            es andere Teile der Umgebung nicht. Zweitens benutzt
            Subversion Berkeley DB auf eine Weise, die nicht auf Windows
            95/98 funktioniert – falls Sie ein BDB-basiertes
@@ -1281,10 +1325,10 @@
            Verbindung und räumt anschließend auf. Und da der
            Datenbank-Dämon der einzige Prozess ist, der auf die
            Tabellen zugreift, brauchen sich Anwendungsprogramme nicht
-          um Berechtigungskonflikte zu kümmern. Das trifft allerdings
+          um Berechtigungs-Konflikte zu kümmern. Das trifft allerdings
            nicht auf Berkeley DB zu. Subversion (und jedes Programm,
            das die Subversion-Bibliotheken verwendet) greift direkt auf
-          die Datenbanktabellen zu, was bedeutet, dass ein
+          die Datenbank-Tabellen zu, was bedeutet, dass ein
            Programmabsturz die Datenbank vorübergehend in einem
            inkonsistenten, nicht zugreifbaren Zustand hinterlassen
            kann, so dass ein Administrator Berkeley DB dazu auffordern
@@ -1355,7 +1399,10 @@
          <title>FSFS</title>

  <!--
-        <para>In mid-2004, a second type of repository storage
+        <para>
+          <indexterm>
+            <primary>FSFS</primary>
+          </indexterm>In mid-2004, a second type of repository storage
            system—one that doesn't use a database at
            all—came into being.  An FSFS repository stores the
            changes associated with a revision in a single file, and so
@@ -1369,7 +1416,10 @@
            <quote>hot,</quote> just like a BDB-backed
            repository.</para>
  -->
-        <para>Mitte 2004 entstand ein zweiter Typ eines
+        <para>
+          <indexterm>
+            <primary>FSFS</primary>
+          </indexterm>Mitte 2004 entstand ein zweiter Typ eines
            Projektarchiv-Speichersystems – eins, das überhaupt keine
            Datenbank verwendet. Ein FSFS-Projektarchiv speichert die zu
            einer Revision gehörenden Änderungen in einer einzelnen
@@ -1384,10 +1434,13 @@
            Betrieb gesichert werden, genauso wie ein BDB-basiertes
            Projektarchiv.</para>

-<!--
          <sidebar id="svn.reposadmin.basics.backends.fsfs.revfiles">
+<!--
            <title>Revision files and shards</title>
+-->
+          <title>Revisionsdateien und Scherben</title>

+<!--
            <para>FSFS repositories contain files that describe the
              changes made in a single revision, and files that contain
              the revision properties associated with a single revision.
@@ -1399,30 +1452,7 @@
              each directory can grow to be quite large.  This has been
              observed to cause performance problems on certain
              network-based filesystems.</para>
-
-          <para>Subversion 1.5 creates FSFS-backed repositories using
-            a slightly modified layout in which the contents of these
-            two directories are <firstterm>sharded</firstterm>, or
-            scattered across several subdirectories.  This can greatly
-            reduce the time it takes the system to locate any one of
-            these files, and therefore increases the overall
-            performance of Subversion when reading from the
-            repository.</para>
-
-          <para>Subversion 1.6 and later takes the sharded layout one
-            step further, allowing administrators to
-            optionally <firstterm>pack</firstterm> each of their
-            repository shards up into a single multi-revision file.
-            This can have both performance and disk usage benefits.
-            See
-            <xref linkend="svn.reposadmin.maint.diskspace.fsfspacking"/>
-            for more information.</para>
-
-        </sidebar>
  -->
-        <sidebar id="svn.reposadmin.basics.backends.fsfs.revfiles">
-          <title>Revisionsdateien und Scherben</title>
-
            <para>FSFS Projektarchive beinhalten sowohl Dateien, die die
              in einer einzelnen Revision gemachten Änderungen
              beschreiben als auch Dateien, die die
@@ -1438,16 +1468,52 @@
              dass es in bestimmten netzbasierten Dateisystemen zu
              Leistungsproblemen kommen kann.</para>

-          <para>Subversion 1.5 erstellt Projektarchive mit FSFS mit
+<!--
+          <para>
+            <indexterm>
+              <primary>FSFS</primary>
+              <secondary>sharding</secondary>
+            </indexterm>Subversion 1.5 creates FSFS-backed
+            repositories using a slightly modified layout in which the
+            contents of these two directories
+            are <firstterm>sharded</firstterm>, or scattered across
+            several subdirectories.  This can greatly reduce the time
+            it takes the system to locate any one of these files, and
+            therefore increases the overall performance of Subversion
+            when reading from the repository.</para>
+-->
+          <para>
+            <indexterm>
+              <primary>FSFS</primary>
+              <secondary>in Scherben zerlegen</secondary>
+            </indexterm>Subversion 1.5 erstellt Projektarchive mit FSFS mit
              einem etwas veränderten Layout, bei dem der Inhalt dieser
-            beiden Verzeichnisse in  <firstterm>Scherben</firstterm>
+            beiden Verzeichnisse in <firstterm>Scherben</firstterm>
              zerlegt wird, oder über mehrere Unterverzeichnisse
              verteilt wird. Das kann erheblich zur Verkürzung der Zeit
              beitragen, die das System benötigt, um irgendeine dieser
              Dateien zu finden, und somit die Gesamtleistung von
              Subversion beim Lesen des Projektarchivs erhöhen.</para>

-          <para>Subversion 1.6 und später geht bei diesem
+<!--
+          <para>
+            <indexterm>
+              <primary>FSFS</primary>
+              <secondary>packing</secondary>
+            </indexterm>Subversion 1.6 and later takes the sharded
+            layout one step further, allowing administrators to
+            optionally <firstterm>pack</firstterm> each of their
+            repository shards up into a single multi-revision file.
+            This can have both performance and disk usage benefits.
+            See
+            <xref linkend="svn.reposadmin.maint.diskspace.fsfspacking"/>
+            for more information.</para>
+-->
+          <para>
+            <indexterm>
+              <primary>FSFS</primary>
+              <secondary>packen</secondary>
+            </indexterm>Subversion 1.6 und später geht bei diesem
              Scherben-Design noch einen Schritt weiter und erlaubt
              Administratoren, optional jede dieser
              Projektarchiv-Scherben in eine einzelne
@@ -1661,7 +1727,7 @@
        <para>Nach dem Ausführen dieses einfachen Befehls haben Sie ein
          Subversion-Projektarchiv. Abhängig davon, wie Anwender künftig
          auf dieses neue Projektarchiv zugreifen sollen, müssten Sie
-        gegebenenfalls an den Dateisystemberechtigungen feilen. Da
+        gegebenenfalls an den Dateisystem-Berechtigungen feilen. Da
          allerdings die grundsätzliche Systemverwaltung nicht
          Gegenstand dieses Textes ist, betrachten wir die weitere
          Untersuchung dieses Themas als Übung für den Leser.</para>
@@ -1764,12 +1830,24 @@
        <title>Erstellen von Projektarchiv-Hooks</title>

  <!--
-      <para>A <firstterm>hook</firstterm> is a program triggered by
-        some repository event, such as the creation of a new revision
-        or the modification of an unversioned property.  Some hooks
-        (the so-called <quote>pre hooks</quote>) run in advance of a
-        repository operation and provide a means by which to both
-        report what is about to happen and prevent it from
+      <para>
+        <indexterm>
+          <primary>hook scripts</primary>
+        </indexterm>
+        <indexterm>
+          <primary>hooks</primary>
+          <see>hook scripts</see>
+        </indexterm>
+        <indexterm>
+          <primary>repositories</primary>
+          <secondary>hooks</secondary>
+          <see>hook scripts</see>
+        </indexterm>A <firstterm>hook</firstterm> is a program
+        triggered by some repository event, such as the creation of a
+        new revision or the modification of an unversioned property.
+        Some hooks (the so-called <quote>pre hooks</quote>) run in
+        advance of a repository operation and provide a means by which
+        to both report what is about to happen and prevent it from
          happening at all.  Other hooks (the <quote>post hooks</quote>)
          run after the completion of a repository event and are useful
          for performing tasks that examine—but don't
@@ -1778,7 +1856,19 @@
          repository changes proposed (or completed), and the username
          of the person who triggered the event.</para>
  -->
-      <para>Ein <firstterm>Hook</firstterm> (Haken) ist ein Programm,
+      <para>
+        <indexterm>
+          <primary>Hook-Skripte</primary>
+        </indexterm>
+        <indexterm>
+          <primary>Hooks</primary>
+          <see>Hook-Skripte</see>
+        </indexterm>
+        <indexterm>
+          <primary>Projektarchive</primary>
+          <secondary>Hooks</secondary>
+          <see>Hook-Skripte</see>
+        </indexterm>Ein <firstterm>Hook</firstterm> (Haken) ist ein  
Programm,
          das durch einige Projektarchiv-Ereignisse gestartet wird, wie
          etwa die Erzeugung einer neuen Revision oder die Veränderung
          einer unversionierten Eigenschaft. Einige Hooks (die sogenannten
@@ -1797,8 +1887,8 @@

  <!--
        <para>The <filename>hooks</filename> subdirectory is, by
-      default, filled with templates for various repository
-      hooks:</para>
+        default, filled with templates for various repository
+        hooks:</para>
  -->
        <para>Das Unterverzeichnis <filename>hooks</filename> beinhaltet
          standardmäßig Vorlagen für verschiedene
@@ -1877,33 +1967,6 @@
          Programme und <filename>.bat</filename> für
          Batch-Dateien.</para>

-<!--
-      <tip>
-        <para>For security reasons, the Subversion repository executes
-          hook programs with an empty environment—that is, no
-          environment variables are set at all, not even
-          <literal>$PATH</literal> (or <literal>%PATH%</literal>,
-          under Windows).  Because of this, many administrators
-          are baffled when their hook program runs fine by hand, but
-          doesn't work when run by Subversion.  Be sure to explicitly
-          set any necessary environment variables in your hook program
-          and/or use absolute paths to programs.</para>
-      </tip>
--->
-      <tip>
-        <para>Aus Sicherheitsgründen führt Subversion Hook-Programme
-          in einer leeren Umgebung aus – d.h., es sind überhaupt
-          keine Umgebungsvariablen gesetzt, nicht einmal
-          <literal>$PATH</literal> (oder <literal>%PATH%</literal>
-          unter Windows). Deshalb sind viele Administratoren verwirrt,
-          wenn deren Hook-Programme normal starten, wenn sie manuell
-          aufgerufen werden, aber nicht laufen, wenn sie Subversion
-          startet. Stellen Sie sicher, dass Sie entweder alle
-          notwendigen Umgebungsvariablen in Ihren Hook-Programmen
-          ausdrücklich setzen und/oder absolute Pfade zu Programmen
-          verwenden.</para>
-        </tip>
-
  <!--
        <para>Subversion executes hooks as the same user who owns the
          process that is accessing the Subversion repository.  In most
@@ -1936,8 +1999,7 @@
  <!--
        <para>There are several hooks implemented by the Subversion
          repository, and you can get details about each of them in
-        <xref linkend="svn.ref.reposhooks" /> in
-        <xref linkend="svn.ref"/>.  As a repository
+        <xref linkend="svn.ref.reposhooks" />.  As a repository
          administrator, you'll need to decide which hooks you wish
          to implement (by way of providing an appropriately named and
          permissioned hook program), and how.  When you make this
@@ -1950,8 +2012,7 @@
  -->
        <para>Es gibt mehrere im Subversion-Projektarchiv implementierte
          Hooks; Details zu jedem können Sie in
-        <xref linkend="svn.ref.reposhooks" />  in
-        <xref linkend="svn.ref"/>nachlesen. Als
+        <xref linkend="svn.ref.reposhooks" /> nachlesen. Als
          Projektarchiv-Administrator müssen Sie entscheiden, welche
          Hooks sie einrichten wollen (indem Sie ein entsprechend
          benanntes und mit den nötigen Zugriffsrechten versehenes
@@ -1963,69 +2024,573 @@
          übergeben dürfen, benötigen Sie für diese Zugriffskontrolle
          nicht das Hook-System.</para>

+      <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
-->
+      <sect3 id="svn.reposadmin.hooks.configuration">
  <!--
-      <para>There is no shortage of Subversion hook programs and
-        scripts that are freely available either from the Subversion  
community
-        itself or elsewhere.  These scripts cover a wide range of
-        utility—basic access control, policy adherence checking,
-        issue tracker integration, email- or syndication-based commit
-        notification, and beyond.  Or, if you wish to write your own,
-        see <xref linkend="svn.developer" />.</para>
+        <title>Hook script environment configuration</title>
  -->
-      <para>Es gibt keinen Mangel an Subversion-Hook-Programmen und
-        Skripten, die frei verfügbar sind, entweder von der
-        Subversion-Gemeinschaft oder von woanders her. Diese Skripte
-        decken ein breites Spektrum ab – grundlegende
-        Zugriffskontrolle, Kontrolle der Prozesstreue,
-        Fehlersystemanbindung, E-Mail-basierte oder syndizierte
-        Benachrichtigungen bei Übergaben und noch viel mehr. Oder,
-        falls Sie Ihren eigenen schreiben wollen, siehe <xref
-        linkend="svn.developer" />.</para>
+        <title>Konfiguration der Umgebung von Hook-Skripten</title>

  <!--
-      <warning>
-        <para>While hook scripts can do almost
-          anything, there is one dimension in which hook script
-          authors should show restraint:  do <emphasis>not</emphasis>
-          modify a commit transaction using hook scripts.  While it
-          might be tempting to use hook scripts to automatically
-          correct errors, shortcomings, or policy violations present
-          in the files being committed, doing so can cause problems.
-          Subversion keeps client-side caches of certain bits of
-          repository data, and if you change a commit transaction in
-          this way, those caches become indetectably stale.  This
-          inconsistency can lead to surprising and unexpected
-          behavior.  Instead of modifying the transaction, you should
-          simply <emphasis>validate</emphasis> the transaction in the
-          <filename>pre-commit</filename> hook and reject the commit
-          if it does not meet the desired requirements.  As a
-          bonus, your users will learn the value of careful,
-          compliance-minded work habits.</para>
-      </warning>
+        <para>By default, Subversion executes hook scripts with an
+          empty environment—that is, no environment variables
+          are set at all, not even <literal>$PATH</literal>
+          (or <literal>%PATH%</literal>, under Windows).  Because of
+          this, many administrators are baffled when their hook
+          program runs fine by hand, but doesn't work when invoked by
+          Subversion.  Administrators have historically worked around
+          this problem by manually setting all the environment
+          variables their hook scripts need in the scripts
+          themselves.</para>
  -->
-      <warning>
-        <para>Obwohl Hook-Skripte fast alles machen können, gibt es
-          eine Dimension, in der sich Hook-Skript-Autoren zurückhalten
-          sollten: Ändern Sie <emphasis>keine</emphasis>
-          Übergabe-Transaktion mithilfe von Hook-Skripten. Trotz der
-          Verlockung, Hook-Skripte zur automatischen Korrektur von
-          Fehlern, Unzulänglichkeiten oder Prozessverletzungen
-          innerhalb der zu übergebenden Dateien einzusetzen, kann das
-          zu Problemen führen. Subversion hält bestimmte
-          Projektarchiv-Daten in client-seitigen Caches vor, und wenn Sie
-          auf diese Art eine Übergabe-Transaktion verändern, werden
-          die im Cache befindlichen Informationen ungültig, ohne dass
-          jemand etwas merkt. Diese Inkonsistenz kann zu
-          überraschendem und unerwartetem Verhalten führen. Statt die
-          Transaktion zu verändern, sollten Sie sie einfach im
-          <filename>pre-commit</filename>-Hook auf
-          <emphasis>Gültigkeit</emphasis> prüfen und die Übergabe
-          ablehnen, falls sie den Anforderungen nicht entspricht. Als
-          Nebeneffekt werden Ihre Benutzer lernen, wie wertvoll eine
-          sorgfältige, sich an den Vorgaben orientierende Arbeitsweise
-          ist.</para>
-      </warning>
+        <para>Standardmäßig führt Subversion Hook-Skripte mit
+          einer leeren Umgebung aus – d.h., es sind überhaupt
+          keine Umgebungsvariablen gesetzt, nicht einmal
+          <literal>$PATH</literal> (oder <literal>%PATH%</literal>
+          unter Windows). Deshalb sind viele Administratoren verwirrt,
+          wenn deren Hook-Programme normal starten, wenn sie manuell
+          aufgerufen werden, aber nicht funktionieren, wenn sie Subversion
+          startet. Historisch haben Administratoren dem Problem damit
+          entgegengewirkt, dass sie manuell alle Umgebungsvariablen,
+          die ihre Hook-Skripte benötigen, im Skript selbst gesetzt
+          haben.</para>

+<!--
+        <para>Subversion 1.8 introduces a new way to manage the
+          environment of Subversion-executed hook scripts—the
+          hook script environment configuration file.  If a Subversion
+          server finds a file named <filename>hooks-env</filename> in
+          the repository's <filename>conf/</filename> subdirectory, it
+          parses that file as an INI-formatted configuration file and
+          applies the option names and variables found therein to the
+          hook script's execution environment as environment
+          variables.</para>
+-->
+        <para>Subversion 1.8 stellt eine neue Art vor, die Umgebung
+          von Hook-Skripten zu verwalten, die von Subversion
+          ausgeführt werden – die Konfigurationsdatei für die
+          Hook-Skript-Umgebung. Falls Subversion eine Datei namens
+          <filename>hooks-env</filename> im Unterverzeichnis
+          <filename>conf/</filename> des Projektarchivs findet, parst
+          es diese Datei als Konfigurationsdatei im INI-Format und
+          wendet die darin gefundenen Optionsnamen und Variablen als
+          Umgebungsvariablen in der Ausführungs-Umgebung für das
+          Hook-Skript an.</para>
+
+<!--
+        <para>The syntax of the <filename>hooks-env</filename> file is
+          pretty straightforward: each section name is the name of a
+          hook script (such as <literal>pre-commit</literal>
+          or <literal>post-revprop-change</literal>, and the
+          configuration items inside that section are treated as
+          mappings of environment variable names to desired values.
+          Additionally, there is a
+          special <literal>[default]</literal> section, which can be
+          used to configure environment variable mappings that should
+          be applied to <emphasis>all</emphasis> hook scripts (unless
+          explicitly overridden by per-hook-script settings).  See
+          <xref linkend="svn.reposadmin.hooks.configuration.ex-1" />
+          for a sample <filename>hooks-env</filename> configuration
+          file.</para>
+-->
+        <para>Die Syntax der Datei <filename>hooks-env</filename> ist
+          ziemlich einfach: jeder Abschnittsname ist der Name eines
+          Hook-Skriptes (etwa <literal>pre-commit</literal>
+          oder <literal>post-revprop-change</literal>), und die
+          Konfigurationseinträge in diesem Abschnitt werden als
+          Abbildungen von Umgebungsvariablen auf gewünschte Werte
+          behandelt. Darüber hinaus gibt es noch einen besonderen
+          Abschnitt <literal>[default]</literal>, der verwendet werden
+          kann, um Abbildungen von Umgebungsvariablen zu
+          konfigurieren, die auf <emphasis>alle</emphasis>
+          Hook-Skripte angewendet werden sollen (es sei denn, sie sind
+          ausdrücklich durch eigene Hook-Skript Einträge
+          überschrieben). Siehe
+          <xref linkend="svn.reposadmin.hooks.configuration.ex-1" />
+          für ein Beispiel einer <filename>hooks-env</filename>
+          Konfigurationsdatei.</para>
+
+<!--
+        <example id="svn.reposadmin.hooks.configuration.ex-1">
+          <title>hooks-env (custom hook script environment
+            configuration)</title>
+
+          <programlisting>
+# All scripts should use a UTF-8 locale and have our hook script
+# utilities directory on the search path.
+
+[default]
+LANG = en_US.UTF-8
+PATH = /usr/local/svn/tools:/usr/bin
+
+
+# The post-commit and post-revprop-change scripts want to run
+# programs from our custom synctools replication software suite, too.
+
+[post-commit]
+PATH = /usr/local/synctools-1.1/bin:%(PATH)s
+
+[post-revprop-change]
+PATH = /usr/local/synctools-1.1/bin:%(PATH)s
+</programlisting>
+        </example>
+-->
+
+        <example id="svn.reposadmin.hooks.configuration.ex-1">
+          <title>hooks-env (maßgeschneiderte Umgebungskonfiguration
+            für Hook-Skripte)</title>
+
+          <programlisting>
+# Alle Skripte sollten eine UTF-8 Locale verwenden und unser Hook-Skript
+# das Werkzeugverzeichnis im Suchpfad haben.
+
+[default]
+LANG = en_US.UTF-8
+PATH = /usr/local/svn/tools:/usr/bin
+
+
+# Auch diee post-commit und post-revprop-change Skripte möchten
+# Programme aus unserer maßgeschneiderten Synctools-Replication-Software
+# Sammlung verwenden.
+
+[post-commit]
+PATH = /usr/local/synctools-1.1/bin:%(PATH)s
+
+[post-revprop-change]
+PATH = /usr/local/synctools-1.1/bin:%(PATH)s
+</programlisting>
+        </example>
+
+        <note>
+<!--
+          <para><xref linkend="svn.reposadmin.hooks.configuration.ex-1"
+            /> also demonstrates the nifty string substitution syntax
+            found in Subversion's configuration file parser.  In this
+            example, the value of the <literal>PATH</literal>
+            option—pulled from the <literal>[default]</literal>
+            section of the file—is substituted in place of
+            the <literal>%(PATH)s</literal> placeholder text in the
+            per-hook sections.  For more about this special syntax,
+            see the <filename>README.txt</filename> file which lives
+            in the Subversion runtime configuration directory.  (And
+            for more information about that directory, see
+            <xref linkend="svn.advanced.confarea" />.)</para>
+-->
+          <para><xref linkend="svn.reposadmin.hooks.configuration.ex-1"
+            /> zeigt auch die elegante Syntax zur Ersetzung von
+            Zeichenketten aus Subversions Konfigurationsdateien-Parser.
+            In diesem Beispiel wird der Wert der Option
+            <literal>PATH</literal> – aus dem Abschnitt
+            <literal>[default]</literal> der Datei gelesen –
+            anstelle des Platzhalters <literal>%(PATH)s</literal> in
+            den Hook-Abschnitten eingefügt. Mehr zu dieser besonderen
+            Syntax finden Sie in der Datei
+            <filename>README.txt</filename> in Subversions Verzeichnis
+            für die Laufzeitkonfiguration. (Und für weitere
+            Informationen zu diesem Verzeichnis, siehe
+            <xref linkend="svn.advanced.confarea" />.)</para>
+        </note>
+
+<!--
+        <para>Of course, having exact duplicates of your custom hook
+          script environment configuration files in every single
+          repository's <filename>conf/</filename> directory could get
+          cumbersome, especially when you need to make changes to them
+          all.  So Subversion's servers allow you to specify an
+          alternate (possibly shared) location for this configuration
+          information.</para>
+-->
+        <para>Natürlich kann es lästig werden, exakte Duplikate Ihrer
+          Hook-Skript-Umgebungs-Konfigurations-Dateien in jedem
+          <filename>conf/</filename> Verzeichnis jedes einzelnen
+          Projektarchivs vorzuhalten, insbesondere, falls Sie
+          Änderungen an allen machen müssen. Deshalb erlauben Ihnen
+          die Server von Subversion, einen alternativen (möglicherweise
+          gemeinsam benutzten) Speicherort für diese Konfiguration
+          anzugeben.</para>
+
+        <!-- ### TODO:  Add cross reference for the above! -->
+
+      </sect3>
+
+      <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
-->
+      <sect3 id="svn.reposadmin.hooks.uses">
+<!--
+        <title>Common uses for hook scripts</title>
+-->
+        <title>Häufige Anwendungen für Hook-Skripte</title>
+
+<!--
+        <para>Repository hook scripts can offer a wide range of
+          utility, but most tend to fall into a few basic categories:
+          notification, validation, and replication.</para>
+-->
+        <para>Projektarchiv-Hook-Skripte können einen breiten Nutzen
+          bieten, doch die meisten decken ein paar grundsätzliche
+          Kategorien ab: Benachrichtigung, Validierung und
+          Replizierung.</para>
+
+<!--
+        <para>Notification scripts are those which tell someone that
+          something happened.  The most common of these found in a
+          Subversion service offering involve programs which send
+          commit and revision property change notification emails to
+          project members, driven by the post-commit and
+          post-revprop-change hooks, respectively.  There are numerous
+          other notification approaches, from issue tracker integration
+          scripts to scripts which operate as IRC bots to announce
+          that something's changed in the repository.</para>
+-->
+        <para>Benachrichtigungs-Skripte sind diejenigen, die jemanden
+          mitteilen, dass etwas passiert ist. Die häufigsten hiervon,
+          die in einem Subversion-Dienst angetroffen werden können,
+          umfassen Programme, die E-Mails mit Benachrichtigungen zu
+          Übertragungen und Änderungen an Revisions-Eigenschaften an
+          Projektmitarbeiter versenden, und die von den post-commit
+          bzw. post-revprop-change Hooks ausgelöst werden. Es gibt
+          zahlreiche andere Ansätze zu Benachrichtigungen, von
+          Integrationsskripten für Fehlerverfolgungs-Systeme bis zu
+          Skripten, die als IRC-Bots arbeiten, um zu verkünden, dass
+          sich etwas im Projektarchiv geändert hat.</para>
+
+<!--
+        <para>On the validation side of things, the start-commit and
+          pre-commit hooks are widely used to allow or disallow
+          commits based on various criteria: the author of the commit,
+          the formatting and/or content of the log message which describes  
the
+          commit, and even the low-level details of the changes made
+          to files and directories in the commit.  Likewise, the
+          pre-revprop-change hook acts as the gateway to revision
+          property changes, which is an especially valuable role
+          considering the fact that revision properties are not
+          themselves versioned, and can therefore only be modified
+          destructively.</para>
+-->
+        <para>Bei der Validierung ist die Verwendung der Hooks
+          start-commit und pre-commit weit verbreitet, um
+          Übertragungen abhängig von verschiedenen Kriterien zu
+          erlauben oder zu verbieten: der Autor der Übertragung, die
+          Formatierung und/oder der Inhalt der Protokollnachricht, die
+          die Übertragung beschreibt, und sogar die Feinheiten der
+          an Dateien und Verzeichnissen vorgenommenen Änderungen in
+          der Übertragung. Ähnlich handelt der Hook
+          pre-revprop-change als Portal zu Änderungen an
+          Revisions-Eigenschaften, was eine besonders nützliche Rolle
+          ist, angesichts der Tatsache, dass Revisions-Eigenschaften
+          an sich nicht versioniert sind und deshalb nur destruktiv
+          bearbeitet werden können.</para>
+
+<!--
+        <para>One special class of change validation that has seen
+          widespread use since Subversion 1.5 was released is
+          validation of the committing client software itself.  When
+          Subversion's merge tracking feature (described extensively
+          in <xref linkend="svn.branchmerge" />) was introduced in
+          that release, Subversion administrators needed a way to
+          ensure that once users of their repositories started using
+          the new feature that <emphasis>all</emphasis> their merges
+          were tracked.  To reduce the chance of someone committing an
+          untracked merge to the repository, they used start-commit
+          hooks to examine the feature capabilities string advertised
+          by Subversion clients.  If the committing client didn't
+          advertise support for merge tracking, the commit was denied
+          with instructions to the user to immediately update their
+          Subversion client!
+          <xref linkend="svn.reposadmin.hooks.uses.ex-1" /> provides
+          an example of a start-commit script which does precisely
+          this.</para>
+-->
+        <para>Eine besondere Klasse von Änderungsvalidierung, die seit
+          der Veröffentlichung Subversion 1.5 weit verbreitet ist,
+          stellt die Validierung des übertragenden Clients an sich
+          dar. Als die Merge-Tracking-Funktionalität von Subversion
+          (ausführlich beschrieben in <xref linkend="svn.branchmerge" />)
+          mit dieser Veröffentlichung eingeführt wurde, benötigten
+          Subversion-Administratoren eine Möglichkeit,
+          sicherzustellen, dass, <emphasis>alle</emphasis> Merges von
+          Anwendern ihrer Projektarchive, die die neue
+          Funktionalität verwendeten, verfolgt werden. Um die
+          Wahrscheinlichkeit eines nicht verfolgten Merges zu
+          verringern, verwendeten sie start-commit-Hooks, um die von
+          Subversion-Clients bekanntgegebenen funktionalen Fähigkeiten
+          zu untersuchen. Falls der übertragende Client nicht die
+          Fähigkeit zur Unterstützung von Merge-Tracking meldete,
+          wurde die Übertragung abgelehnt und eine Anleitung zum
+          aktualisieren des Clients an den Anwender gesendet.
+          <xref linkend="svn.reposadmin.hooks.uses.ex-1" /> stellt
+          ein Beispiel eines start-commit-Skripts bereit, was genau
+          das macht.</para>
+
+        <example id="svn.reposadmin.hooks.uses.ex-1">
+<!--
+          <title>start-commit hook to require merge tracking
+            support</title>
+-->
+          <title>start-commit Hook, um Merge-Tracking Unterstützung zu
+            erzwingen</title>
+
+          <programlisting>
+#!/usr/bin/env python
+import sys
+
+# sys.argv[3] is a colon-delimited capabilities list
+if 'mergeinfo' not in sys.argv[3].split(':'):
+  sys.stderr.write("""\
+ERROR: Commits to this repository must be made using Subversion
+clients which support the merge tracking feature.  Please upgrade
+your client to at least Subversion 1.5.0.
+""")
+  sys.exit(1)
+</programlisting>
+        </example>
+
+<!--
+        <para>
+          <indexterm>
+            <primary>properties</primary>
+            <secondary>ephemeral transaction properties</secondary>
+          </indexterm>Beginning in Subversion 1.8, clients committing
+          against a Subversion 1.8 server will still provide the
+          feature capabilities string, but will also provide
+          additional information about themselves by way
+          of <firstterm>ephemeral transaction properties</firstterm>.
+          Ephemeral transaction properties are essentially revision
+          properties which are set on the commit transaction by the
+          client at the earliest opportunity while committing, but
+          which are automatically removed by the server immediately
+          prior to the transaction becoming a finalized revision.  You
+          can inspect these properties using the same tools with which
+          you'd inspect other unversioned properties set on commit
+          transactions during the timeframe between which the
+          start-commit and pre-commit repository hook scripts would
+          operate.</para>
+-->
+        <para>
+          <indexterm>
+            <primary>Eigenschaften</primary>
+            <secondary>flüchtige Transaktions-Eigenschaften</secondary>
+          </indexterm>Beginnend mit Subversion 1.8, stellen Clients,
+          die an einen Subversion 1.8 Server übertragen immer noch die
+          Zeichenkette mit ihren funktionalen Fähigkeiten zur
+          Verfügung, geben darüber hinaus gehend jedoch zusätzliche
+          Informationen über sich preis durch <firstterm>flüchtige
+            Transaktions-Eigenschaften</firstterm>. Flüchtige
+          Transaktions-Eigenschaften sind im Grunde genommen
+          Revisions-Eigenschaften, die vom Client während der
+          Übertragungs-Transaktion bei der frühesten Gelegenheit
+          gesetzt werden, die dann aber vom Server wieder entfernt
+          werden, unmittelbar, bevor die Transaktion eine
+          abgeschlossene Revision wird. Sie können diese Eigenschaften
+          mit denselben Werkzeugen untersuchen, mit denen Sie andere
+          bei Übertragungs-Transaktionen im Zeitraum zwischen dem
+          Aufruf der start-commit und pre-commit Hooks gesetzte
+          unversionierte Eigenschaften untersuchen würden.</para>
+
+<!--
+        <para>The following are the ephemeral transaction properties
+          which Subversion currently provides and implements:</para>
+-->
+        <para>Die folgenden sind die flüchtigen
+          Transaktions-Eigenschaften, die Subversion momentan
+          unterstützt und implementiert:</para>
+
+        <variablelist>
+
+          <varlistentry>
+            <term><literal>svn:txn-client-compat-version</literal></term>
+            <listitem>
+<!--
+              <para>Carries the Subversion library version string with
+                which the committing client claims compatibility.
+                This is useful for deciding whether the client
+                supports the minimal feature set required for proper
+                handling of the repository data.</para>
+-->
+              <para>Beinhaltet die Zeichenkette mit der Version der
+                Subversion-Bibliothek zu der der Client angibt,
+                kompatibel zu sein. Das ist nützlich, um zu
+                entscheiden, ob der Client die zur richtigen
+                Behandlung der Projektarchiv-Daten notwendige minimale
+                Funktionalität unterstützt.</para>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term><literal>svn:txn-user-agent</literal></term>
+            <listitem>
+<!--
+              <para>Carries the <quote>user agent</quote> string which
+                describes the committing client program.  Subversion's
+                libraries define the initial portion of this string,
+                but third-party consumers of the API (GUI clients,
+                etc.) can append custom information to it.</para>
+-->
+              <para>Beinhaltet die Zeichenkette <quote>user
+                agent</quote>, die das übertragende Client-Programm
+                beschreibt. Die Bibliotheken von Subversion definieren
+                der ersten Teil dieser Zeichenkette, doch können
+                Dritte, die dieses API verwenden (GUI-Clients, usw.)
+                eigene Informationen anhängen.</para>
+            </listitem>
+          </varlistentry>
+
+        </variablelist>
+
+        <!-- ### TODO: Show an example of these being used?  Or ### -->
+        <!-- ###       do so in ch07 - Customizing Subversion   ### -->
+        <!-- ###       with a cross-reference here.             ### -->
+
+        <note>
+<!--
+          <para>While most clients will transmit ephemeral transaction
+            properties early enough in the commit process that they
+            may be inspected by the start-commit hook script, some
+            configurations of Subversion will cause those properties
+            to not be set on the transaction until later in the commit
+            process.  Administrators should consider performing any
***The diff for this file has been truncated for email.***


More information about the svnbook-dev mailing list