[svnbook] r3812 committed - * trunk/src/de/book/ch03-advanced-topics.xml...

svnbook at googlecode.com svnbook at googlecode.com
Tue Nov 2 13:21:55 CDT 2010


Revision: 3812
Author: jmfelderhoff at gmx.eu
Date: Tue Nov  2 11:21:15 2010
Log: * trunk/src/de/book/ch03-advanced-topics.xml
   - Ticket #137 (Creating Locks) (cf.
     http://www.svnbook.de/ticket/137).

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

Modified:
  /trunk/src/de/book/ch03-advanced-topics.xml

=======================================
--- /trunk/src/de/book/ch03-advanced-topics.xml	Tue Oct 26 12:39:02 2010
+++ /trunk/src/de/book/ch03-advanced-topics.xml	Tue Nov  2 11:21:15 2010
@@ -4607,8 +4607,12 @@

      <!-- ===============================================================  
-->
      <sect2 id="svn.advanced.locking.creation">
+<!--
        <title>Creating Locks</title>
-
+-->
+      <title>Anlegen von Sperren</title>
+
+<!--
        <para>In the Subversion repository, a
          <firstterm>lock</firstterm> is a piece of metadata that
          grants exclusive access to one user to change a file.  This
@@ -4624,7 +4628,26 @@
          owner, and that the lock token has been provided as part of
          the commit process as a form of proof that the client knows which
          lock it is using.</para>
-
+-->
+      <para>Im Projektarchiv von Subversion ist eine
+        <firstterm>Sperre</firstterm> ein Metadatum, das einem
+        Benutzer das exklusive Recht zum Ändern einer Datei erteilt.
+        Dieser Benutzer wird <firstterm>Sperreigner</firstterm>
+        genannt. Jede Sperre hat auch eine eindeutige Identifikation,
+        üblicherweise eine lange Zeichenkette,
+        <firstterm>Sperrmarke</firstterm> genannt. Das Projektarchiv
+        verwaltet Sperren, letztendlich übernimmt es das Anlegen, das
+        Durchsetzten und das Entfernen derselben. Falls irgendeine
+        Übertragungstransaktion versucht, eine gesperrte Datei zu
+        ändern oder zu löschen (oder eins der Elternverzeichnisse der
+        Datei zu löschen), verlangt das Projektarchiv zweierlei
+        Informationen: dass der die Übertragung ausführende Client
+        sich als der Eigner der Sperrmarke authentifiziert, und dass
+        die Sperrmarke im Zuge der Übertragung vorgelegt wird, um zu
+        beweisen, dass der Client weiß, welche Sperre verwendet
+        wird.</para>
+
+<!--
        <para>To demonstrate lock creation, let's refer back to our
          example of multiple graphic designers working on the same
          binary image files.  Harry has decided to change a JPEG image.
@@ -4632,26 +4655,59 @@
          while he is modifying it (as well as alerting them that he is
          about to change it), he locks the file in the repository using
          the <command>svn lock</command> command.</para>
-
+-->
+      <para>Um das Anlegen einer Sperre zu demonstrieren, gehen wir
+        zurück zu unserem Beispiel mit mehreren Grafikdesignern, die
+        an derselben binären Bilddatei arbeiten. Harry hat sich
+        entschieden, ein JPEG-Bild zu ändern. Um andere Leute daran
+        zu hindern, Änderungen an der Datei zu übertragen, während er
+        sie ändert (und auch, um ihnen mitzuteilen, dass er gerade
+        Änderungen vornimmt), sperrt er die Datei im Projektarchiv mit
+        dem Befehl <command>svn lock</command>.</para>
+
+<!--
        <screen>
  $ svn lock banana.jpg -m "Editing file for tomorrow's release."
  'banana.jpg' locked by user 'harry'.
  $
+</screen>
+-->
+      <screen>
+$ svn lock banana.jpg -m "Editing file for tomorrow's release."
+»banana.jpg« gesperrt durch »harry«.
+$
  </screen>

+<!--
        <para>The preceding example demonstrates a number of new things.
          First, notice that Harry passed the
-        <option>--message</option> (<option>-m</option>) option to
+        <option>- -message</option> (<option>-m</option>) option to
          <command>svn lock</command>.  Similar to <command>svn
          commit</command>, the <command>svn lock</command> command can
-        take comments—via either <option>--message</option>
-        (<option>-m</option>) or <option>--file</option>
+        take comments—via either <option>- -message</option>
+        (<option>-m</option>) or <option>- -file</option>
          (<option>-F</option>)—to describe the reason for locking the
          file.  Unlike <command>svn commit</command>, however,
          <command>svn lock</command> will not demand a message by
          launching your preferred text editor.  Lock comments are
          optional, but still recommended to aid communication.</para>
-
+-->
+      <para>Das vorangegangene Beispiel zeigt eine Menge neuer Dinge.
+        Beachten Sie zunächst, dass Harry die Option
+        <option>--message</option> (<option>-m</option>) an
+        <command>svn lock</command> übergeben hat. Ähnlich wie
+        <command>svn commit</command> kann der Befehl <command>svn
+          lock</command> Kommentare annehmen, entweder über
+        <option>--message</option> (<option>-m</option>) oder
+        <option>--file</option> (<option>-F</option>), um den Grund
+        für die Dateisperre zu beschreiben. Im Gegensatz zu
+        <command>svn commit</command> verlangt <command>svn
+          lock</command> jedoch nicht nach einer Nachricht, indem es
+        Ihren bevorzugten Texteditor aufruft. Sperrkommentare sind
+        zwar optional, aber zur Unterstützung der Kommunikation
+        empfohlen.</para>
+
+<!--
        <para>Second, the lock attempt succeeded.  This means that the
          file wasn't already locked, and that Harry had the latest
          version of the file.  If Harry's working copy of the file had
@@ -4660,13 +4716,32 @@
          reattempt the locking command.  The locking command would also
          have failed if the file had already been locked by someone
          else.</para>
-
+-->
+      <para>Zum Zweiten war der Sperrversuch erfolgreich. Das
+        bedeutet, dass die Datei noch nicht gesperrt war, und Harry
+        die letzte Version der Datei hatte. Falls Harrys Arbeitskopie
+        der Datei nicht mehr aktuell gewesen wäre, hätte das
+        Projektarchiv die Anfrage abgelehnt und Harry dazu gezwungen,
+        <command>svn update</command> aufzurufen und den Sperrbefehl
+        dann erneut zu versuchen. Der Sperrbefehl wäre ebenso
+        fehlgeschlagen, falls die Datei bereits von jemand anderem
+        gesperrt worden wäre.</para>
+
+<!--
        <para>As you can see, the <command>svn lock</command> command
          prints confirmation of the successful lock.  At this point,
          the fact that the file is locked becomes apparent in the
          output of the <command>svn status</command> and <command>svn
          info</command> reporting subcommands.</para>
-
+-->
+      <para>Wie Sie sehen können, gibt der Befehl <command>svn
+          lock</command> eine Bestätigung bei einer erfolgreichen
+        Sperrung aus. An dieser Stelle wird die Tatsache, dass die
+        Datei gesperrt ist, durch die Ausgabe der berichtenden
+        Unterbefehle <command>svn status</command> und <command>svn
+        info</command> offensichtlich.</para>
+
+<!--
        <screen>
  $ svn status
       K banana.jpg
@@ -4693,7 +4768,35 @@

  $
  </screen>
-
+-->
+      <screen>
+$ svn status
+     K banana.jpg
+
+$ svn info banana.jpg
+Pfad: banana.jpg
+Name: banana.jpg
+URL: http://svn.example.com/repos/project/banana.jpg
+UUID des Projektarchivs: edb2f264-5ef2-0310-a47a-87b0ce17a8ec
+Revision: 2198
+Knotentyp: Datei
+Plan: normal
+Letzter Autor: frank
+Letzte geänderte Rev: 1950
+Letztes Änderungsdatum: 2006-03-15 12:43:04 -0600 (Wed, 15 Mar 2006)
+Text zuletzt geändert: 2006-06-08 19:23:07 -0500 (Thu, 08 Jun 2006)
+Eigenschaften zuletzt geändert: 2006-06-08 19:23:07 -0500 (Thu, 08 Jun  
2006)
+Prüfsumme: 3b110d3b10638f5d1f4fe0f436a5a2a5
+Sperrmarke: opaquelocktoken:0c0f600b-88f9-0310-9e48-355b44d4a58e
+Sperreigner: harry
+Sperre erzeugt: 2006-06-14 17:20:31 -0500 (Wed, 14 Jun 2006)
+Sperrkommentar (1 Zeile):
+Editing file for tomorrow's release.
+
+$
+</screen>
+
+<!--
        <para>The fact that the <command>svn info</command> command,
          which does not contact the repository when run against working
          copy paths, can display the lock token reveals an important
@@ -4703,10 +4806,26 @@
          lock later on.  Also, the <command>svn status</command>
          command shows a <literal>K</literal> next to the file (short
          for locKed), indicating that the lock token is present.</para>
+-->
+      <para>Aus der Tatsache, dass der Befehl <command>svn
+          info</command>, der nicht das Projektarchiv kontaktiert,
+        wenn er mit einem Pfad der Arbeitskopie aufgerufen wird,
+        die Sperrmarke anzeigen kann, enthüllt eine wichtige
+        Information über diese Marken: sie werden in der Arbeitskopie
+        zwischengespeichert. Das Vorhandensein der Sperrmarke ist
+        kritisch. Sie erteilt der Arbeitskopie die Autorisierung, die
+        Sperrmarke später zu verwenden. Darüber hinaus zeigt der
+        Befehl <command>svn status</command> ein <literal>K</literal>
+        neben der Datei an (kurz für locKed, gesperrt), was darauf
+        hinweist, dass die Sperrmarke vorhanden ist.</para>

        <sidebar>
+<!--
          <title>Regarding Lock Tokens</title>
-
+-->
+        <title>Über Sperrmarken</title>
+
+<!--
          <para>A lock token isn't an authentication token, so much as
            an <emphasis>authorization</emphasis> token.  The token
            isn't a protected secret.  In fact, a lock's unique token is
@@ -4716,7 +4835,21 @@
            in that particular working copy, and not somewhere else by
            some other client.  Merely authenticating as the lock owner
            isn't enough to prevent accidents.</para>
-
+-->
+        <para>Eine Sperrmarke ist keine Authentifizierungsmarke, eher
+          eine <emphasis>Autorisierungsmarke</emphasis>. Die Marke ist
+          kein geschütztes Geheimnis. Tatsächlich kann die für eine
+          Sperre einzigartige Marke von jedem entdeckt werden, der
+          <userinput>svn info
+            <replaceable>URL</replaceable></userinput> aufruft. Eine
+          Sperrmarke wird erst dann etwas besonderes, wenn sie
+          innerhalb einer Arbeitskopie liegt. Sie ist der Beweis
+          dafür, dass die Sperre in dieser bestimmten Arbeitskopie
+          angelegt wurde und nicht irgendwo anders durch irgendeinen
+          anderen Client. Es reicht nicht, sich als Sperreigner zu
+          authentifizieren, um Missgeschicke zu verhindern.</para>
+
+<!--
          <para>For example, suppose you lock a file using a computer at
            your office, but leave work for the day before you finish
            your changes to that file.  It should not be possible to
@@ -4728,12 +4861,31 @@
            really need to change the file from an alternative working
            copy, you would need to <firstterm>break</firstterm> the lock  
and relock the
            file.)</para>
+-->
+        <para>Nehmen wir beispielsweise an, Sie sperrten eine Datei im
+          Büro aber machten Feierabend, bevor Sie die Änderungen an
+          dieser Datei fertiggestellt haben. Es sollte nicht möglich
+          sein, später am Abend versehentlich Änderungen an derselben
+          Datei von Ihrem Rechner zu Hause aus zu machen, nur weil Sie
+          sich als Sperreigner authentifiziert haben. Mit anderen
+          Worten verhindert die Sperrmarke, dass ein Teil von
+          Subversion-Software die Arbeit eines anderen Teils
+          unterminiert. (In unserem Beispiel hätten Sie eine
+          <firstterm>Freigabeerzwingung</firstterm> mit
+          anschließender, erneuter Sperrung durchführen müssen, wenn
+          Sie die Datei wirklich aus einer anderen Arbeitskopie heraus
+          hätten ändern müssen.)</para>

        </sidebar>

+<!--
        <para>Now that Harry has locked <filename>banana.jpg</filename>,
          Sally is unable to change or delete that file:</para>
-
+-->
+      <para>Da Harry nun <filename>banana.jpg</filename> gesperrt hat,
+        kann Sally diese Datei weder ändern noch löschen:</para>
+
+<!--
        <screen>
  $ svn delete banana.jpg
  D         banana.jpg
@@ -4744,13 +4896,27 @@
   request  
for '/repos/project/!svn/wrk/64bad3a9-96f9-0310-818a-df4224ddc35d/\
  banana.jpg'
  $
+</screen>
+-->
+      <screen>
+$ svn delete banana.jpg
+D         banana.jpg
+$ svn commit -m "Delete useless file."
+Lösche         banana.jpg
+svn: Übertragen schlug fehl (Details folgen):
+svn: Der Server hat einen unerwarteten Rückgabewert (423 Locked) in  
Antwort auf die "
+ Anfrage DELETE für  
»/repos/project/!svn/wrk/64bad3a9-96f9-0310-818a-df4224ddc35d/\
+banana.jpg« zurückgeliefert"
+$
  </screen>

-      <para>But Harry, after touching up the banana's shade of yellow,
-        is able to commit his changes to the file.  That's because he
-        authenticates as the lock owner and also because his working
-        copy holds the correct lock token:</para>
-
+      <para>Harry aber kann seine Änderungen an der Datei übertragen,
+        nachdem er das Gelb der Banane verbessert hat. Das
+        funktioniert, da er sich als der Sperreigner authentifiziert
+        hat, und weil seine Arbeitskopie die korrekte Sperrmarke
+        beinhaltet:</para>
+
+<!--
        <screen>
  $ svn status
  M    K banana.jpg
@@ -4760,8 +4926,20 @@
  Committed revision 2201.
  $ svn status
  $
+</screen>
+-->
+      <screen>
+$ svn status
+M    K banana.jpg
+$ svn commit -m "Make banana more yellow"
+Sende          banana.jpg
+Übertrage Daten .
+Revision 2201 übertragen.
+$ svn status
+$
  </screen>

+<!--
        <para>Notice that after the commit is finished, <command>svn
          status</command> shows that the lock token is no longer
          present in the working copy.  This is the standard behavior of
@@ -4779,23 +4957,59 @@
          he needs to change, yet changes only four of those files, when he
          runs <userinput>svn commit images</userinput>, the process will
          still release all 30 locks.</para>
-
+-->
+      <para>Beachten Sie, dass nach Abschluss der Übertragung
+        <command>svn status</command> anzeigt, dass die Sperrmarke
+        nicht mehr in der Arbeitskopie vorhanden ist. Das ist das
+        Standardverhalten von <command>svn commit</command> – es
+        durchsucht die Arbeitskopie (oder die Liste von Zielobjekten,
+        falls angegeben) nach lokalen Änderungen und sendet im Zuge
+        der Übertragungstransaktion alle Sperrmarken denen es begegnet
+        an den Server. Nach dem erfolgreichem Abschluss der
+        Übertragung, sind alle erwähnten Sperren aufgehoben –
+        <emphasis>sogar für Dateien, die nicht übertragen worden
+          sind</emphasis>. Das soll Benutzer davon abschrecken, beim
+        Sperren oder beim langen Halten von Sperren schludrig zu sein.
+        Falls Harry wahllos 30 Dateien in einem Verzeichnis namens
+        <filename>images</filename> sperrt, weil er sich nicht sicher
+        ist, welche Dateien er ändern muss, dann aber nur vier dieser
+        Dateien ändert, werden trotzdem alle 30 Sperren freigegeben,
+        wenn er <userinput>svn commit images</userinput>
+        aufruft.</para>
+
+<!--
        <para>This behavior of automatically releasing locks can be
-        overridden with the <option>--no-unlock</option> option to
+        overridden with the <option>- -no-unlock</option> option to
          <command>svn commit</command>.  This is best used for those
          times when you want to commit changes, but still plan to make
          more changes and thus need to retain existing locks.  You can
          also make this your default behavior by setting the
          <literal>no-unlock</literal> runtime configuration option (see
          <xref linkend="svn.advanced.confarea" />).</para>
-
+-->
+      <para>Dieses Verhalten der automatischen Sperrfreigabe kann mit
+        der Option <option>--no-unlock</option> von <command>svn
+          commit</command> unterbunden werden. Diese Option wird am
+        besten dann verwendet, wenn Sie Änderungen übertragen möchten,
+        aber trotzdem weitere Änderungen planen und die Sperren
+        deshalb beibehalten werden sollen. Sie können das auch zum
+        Standardverhalten machen, indem Sie die Laufzeitoption
+        <literal>no-unlock</literal> setzen (siehe <xref
+          linkend="svn.advanced.confarea" />).</para>
+
+<!--
        <para>Of course, locking a file doesn't oblige one to commit a
          change to it.  The lock can be released at any time with a
          simple <command>svn unlock</command> command:</para>
+-->
+      <para>Natürlich wird durch das Sperren einer Datei keine
+        Verpflichtung eingegangen, eine Änderung übertragen zu müssen.
+        Die Sperre kann jederzeit mit einem einfachen <command>svn
+          unlock</command> freigegeben werden:</para>

        <screen>
  $ svn unlock banana.c
-'banana.c' unlocked.
+»banana.cs« freigegeben.
  </screen>

      </sect2>


More information about the svnbook-dev mailing list