[svnbook] r4309 committed - Ticket #321: "Set up replication" (cf....

svnbook at googlecode.com svnbook at googlecode.com
Tue Oct 2 12:23:55 CDT 2012


Revision: 4309
Author:   jmfelderhoff at gmx.eu
Date:     Tue Oct  2 10:23:35 2012
Log:      Ticket #321: "Set up replication" (cf.
http://www.svnbook.de/ticket/321).

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

Modified:
  /branches/1.5/de/book/ch06-server-configuration.xml

=======================================
--- /branches/1.5/de/book/ch06-server-configuration.xml	Sun Sep 16 22:25:04  
2012
+++ /branches/1.5/de/book/ch06-server-configuration.xml	Tue Oct  2 10:23:35  
2012
@@ -5402,8 +5402,12 @@
          </sect4>

          <sect4 id="svn.serverconfig.httpd.extra.writethruproxy.replicate">
+<!--
            <title>Set up replication</title>
+-->
+          <title>Einrichten der Replizierung</title>

+<!--
            <para>Now that you've configured
              your <literal>Location</literal> blocks on master and
              slaves, you need to configure the master to replicate to
@@ -5412,7 +5416,18 @@
              with this tool, see
              <xref linkend="svn.reposadmin.maint.replication"/> for
              details.</para>
+-->
+          <para>Nachdem Sie nun Ihre
+            <literal>Location</literal>-Blöcke auf Mastern und Slaves
+            konfiguriert haben, müssen Sie nun Ihren Master für die
+            Replizierung zu den Slaves einrichten. Das geschieht auf
+            die übliche Weise – mit <command>svnsync</command>.
+            Wenn Sie dieses Werkzeug noch nicht kennen, können Sie
+            Details unter
+            <xref linkend="svn.reposadmin.maint.replication"/>
+            nachlesen.</para>

+<!--
            <para>First, make sure that each slave repository has a
              <filename>pre-revprop-change</filename> hook script which
              allows remote revision property changes.  (This is
@@ -5421,7 +5436,19 @@
              server and configure each of the slave repository URIs to
              receive data from the master repository on the local
              disk:</para>
+-->
+          <para>Stellen Sie zunächst sicher, dass jedes
+            Slave-Projektarchiv ein
+            <filename>pre-revprop-change</filename>-Hook-Script hat,
+            das Änderungen an Revisions-Eigenschaften aus der Ferne
+            ermöglicht. (Das ist Standard, wenn von
+            <command>svnsync</command> empfangen wird.) Melden Sie
+            sich dann auf dem Master-Server an und konfigurieren jede
+            der Slave-Projektarchiv-URIs, so dass sie Daten vom
+            Master-Projektarchiv auf der lokalen Platte
+            empfangen:</para>

+<!--
            <screen>
  $ svnsync init http://slave1.example.com/svn-proxy-sync  
file://var/svn/repos
  Copied properties for revision 0.
@@ -5459,11 +5486,57 @@
  Copied properties for revision 2.
  …
  </screen>
+-->
+          <screen>
+$ svnsync init http://slave1.example.com/svn-proxy-sync  
file://var/svn/repos
+Eigenschaften für Revision 0 kopiert.
+$ svnsync init http://slave2.example.com/svn-proxy-sync  
file://var/svn/repos
+Eigenschaften für Revision 0 kopiert.
+$ svnsync init http://slave3.example.com/svn-proxy-sync  
file://var/svn/repos
+Eigenschaften für Revision 0 kopiert.

+# Die initiale Replizierung durchführe
+
+$ svnsync sync http://slave1.example.com/svn-proxy-sync
+Übertrage Daten ....
+Revision 1 übertragen.
+Eigenschaften für Revision 1 kopiert.
+Übertrage Daten ....
+Revision 2 übertragen.
+Eigenschaften für Revision 2 kopiert.
+…
+
+$ svnsync sync http://slave2.example.com/svn-proxy-sync
+Übertrage Daten ....
+Revision 1 übertragen.
+Eigenschaften für Revision 1 kopiert.
+Übertrage Daten ....
+Revision 2 übertragen.
+Eigenschaften für Revision 2 kopiert.
+…
+
+$ svnsync sync http://slave3.example.com/svn-proxy-sync
+Übertrage Daten ....
+Revision 1 übertragen.
+Eigenschaften für Revision 1 kopiert.
+Übertrage Daten ....
+Revision 2 übertragen.
+Eigenschaften für Revision 2 kopiert.
+…
+</screen>
+
+<!--
            <para>After this is done, we configure the master server's
              <literal>post-commit</literal> hook script to invoke
              <command>svnsync</command> on each slave server:</para>
+-->
+          <para>Nachdem das erledigt ist, wird das
+            <literal>post-commit</literal>-Hook-Script des
+            Master-Servers konfiguriert, damit
+            <command>svnsync</command> auf jedem Slave-Server
+            aufgerufen wird:</para>

+<!--
            <programlisting>
  #!/bin/sh
  # Post-commit script to replicate newly committed revision to slaves
@@ -5472,7 +5545,17 @@
  svnsync sync http://slave2.example.com/svn-proxy-sync > /dev/null  
2>&1
  svnsync sync http://slave3.example.com/svn-proxy-sync > /dev/null  
2>&1
  </programlisting>
+-->
+          <programlisting>
+#!/bin/sh
+# Post-Commit-Script zum Replizieren der neu übergebenen Revision an die  
Slaves

+svnsync sync http://slave1.example.com/svn-proxy-sync > /dev/null  
2>&1
+svnsync sync http://slave2.example.com/svn-proxy-sync > /dev/null  
2>&1
+svnsync sync http://slave3.example.com/svn-proxy-sync > /dev/null  
2>&1
+</programlisting>
+
+<!--
            <para>The extra bits on the end of each line aren't
              necessary, but they're a sneaky way to allow the sync
              commands to run in the background so that the Subversion
@@ -5482,7 +5565,19 @@
              <literal>post-revprop-change</literal> hook as well so
              that when a user, say, modifies a log message, the slave
              servers get that change also:</para>
+-->
+          <para>Die zusaätzlichen Stückchen am Ende jeder Zeile sind
+            zwar nicht notwendig, erlauben es aber den Sync-Befehlen,
+            auf eine leise Art und Weise im Hintergrund zu laufen, so
+            dass der Subversion-Clien keine Ewigkeit auf den Abschluss
+            der Übergabe warten muss. Zusätzlich zu diesem
+            <literal>post-commit</literal>-Hook werden Sie außerdem
+            einen <literal>post-revprop-change</literal>-Hook
+            benötigen, damit, wenn ein Benutzer beispielsweise eine
+            Protokollnachricht verändert, die Slave-Server diese
+            Änderung ebenfalls mitbekommen:</para>

+<!--
            <programlisting>
  #!/bin/sh
  # Post-revprop-change script to replicate revprop-changes to slaves
@@ -5492,7 +5587,18 @@
  svnsync copy-revprops http://slave2.example.com/svn-proxy-sync ${REV} >  
/dev/null 2>&1
  svnsync copy-revprops http://slave3.example.com/svn-proxy-sync ${REV} >  
/dev/null 2>&1
  </programlisting>
+-->
+          <programlisting>
+#!/bin/sh
+# Post-revprop-Change-Script zur Weitergabe der Änderung an den  
Revisionseigenschaften an die Slaves

+REV=${2}
+svnsync copy-revprops http://slave1.example.com/svn-proxy-sync ${REV} >  
/dev/null 2>&1
+svnsync copy-revprops http://slave2.example.com/svn-proxy-sync ${REV} >  
/dev/null 2>&1
+svnsync copy-revprops http://slave3.example.com/svn-proxy-sync ${REV} >  
/dev/null 2>&1
+</programlisting>
+
+<!--
            <para>The only thing we've left out here is what to do about
              locks.  Because locks are strictly enforced by the master
              server (the only place where commits happen), we don't
@@ -5509,6 +5615,25 @@
              unlock</command> on each slave machine, presumably through
              a remote shell method such as SSH.  That's left as an
              exercise for the reader!</para>
+-->
+          <para>Das Einzige, was wir hier ausgelassen haben, ist die
+            Behandlung von Sperren. Da Sperren streng vom
+            Master-Server durchgesetzt werden (die einzige Stelle, an
+            denen Übergaben stattfinden), brauchen wir technisch gar
+            nichts zu tun. Viele Teams benutzen die Sperrmechanismen
+            von Subversions überhaupt nicht, so dass es Sie vielleicht
+            gar nicht betrifft. Wenn jedoch Änderungen an Sperren
+            nicht vom Master an die Slaves weitergegeben werden,
+            bedeutet das, dass Clients den Zustand von Sperren nicht
+            abfragen können (z.B. wird <userinput>svn status
+              -u</userinput> keinerlei Informationen über
+            Projektarchiv-Sperren anzeigen). Sollte Sie das stören,
+            können Sie <literal>post-lock</literal> und
+            <literal>post-unlock</literal>-Hook-Scripts schreiben, die
+            <command>svn lock</command> und <command>svn
+              unlock</command> auf jedem Slave-Rechner aufrufen, etwa
+            über einen Remote-Shell-Mechanismus, wie etwa SSH. Das sei
+            dem Leser als Übung überlassen!</para>

          </sect4>



More information about the svnbook-dev mailing list