[svnbook] r4514 committed - Translation: Chapter 3: Advanced Topics

svnbook at googlecode.com svnbook at googlecode.com
Fri Jun 14 14:18:40 CDT 2013


Revision: 4514
Author:   jmfelderhoff at gmx.eu
Date:     Fri Jun 14 12:18:18 2013
Log:      Translation: Chapter 3: Advanced Topics

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

Modified:
  /branches/1.6/de/book/ch03-advanced-topics.xml

=======================================
--- /branches/1.6/de/book/ch03-advanced-topics.xml	Mon May 13 23:26:26 2013
+++ /branches/1.6/de/book/ch03-advanced-topics.xml	Fri Jun 14 12:18:18 2013
@@ -44,7 +44,7 @@

  <!--
    <para>This chapter highlights some of Subversion's features that,
-    while important, aren't part of the typical user's daily routine.
+    while important, may not be part of the typical user's daily routine.
      It assumes that you are familiar with Subversion's basic file and
      directory versioning capabilities.  If you aren't, you'll want to
      first read <xref linkend="svn.basic" /> and <xref
@@ -53,7 +53,7 @@
  -->
    <para>Dieses Kapitel beleuchtet einige der Funktionen von
      Subversion, die, obwohl wichtig, jedoch nicht Bestandteil des
-    typischen Tagesablaufs eines Benutzers sind. Es wird
+    typischen Tagesablaufs eines Benutzers sein könnten. Es wird
      vorausgesetzt, dass Sie sich mit den grundlegenden Fähigkeiten von
      Subversion zur Datei- und Verzeichnisversionierung auskennen.
      Falls nicht, sollten Sie zunächst <xref linkend="svn.basic" /> und
@@ -162,18 +162,6 @@
          <primary>Revisionen</primary>
          <secondary>Revisions-Schlüsselworte</secondary>
        </indexterm>
-      <indexterm>
-        <primary>HEAD</primary>
-      </indexterm>
-      <indexterm>
-        <primary>BASE</primary>
-      </indexterm>
-      <indexterm>
-        <primary>COMMITTED</primary>
-      </indexterm>
-      <indexterm>
-        <primary>PREV</primary>
-      </indexterm>

  <!--
        <para>The Subversion client understands a number of revision
@@ -194,6 +182,18 @@
          <varlistentry>
            <term><literal>HEAD</literal></term>
            <listitem>
+            <indexterm>
+              <primary>HEAD</primary>
+            </indexterm>
+            <indexterm>
+<!--
+              <primary>revisions</primary>
+              <secondary>keywords</secondary>
+-->
+              <primary>Revisionen</primary>
+              <secondary>Schlüsselworte</secondary>
+              <tertiary>HEAD</tertiary>
+            </indexterm>
  <!--
              <para>The latest (or <quote>youngest</quote>) revision in
                the repository.</para>
@@ -206,6 +206,18 @@
          <varlistentry>
            <term><literal>BASE</literal></term>
            <listitem>
+            <indexterm>
+              <primary>BASE</primary>
+            </indexterm>
+            <indexterm>
+<!--
+              <primary>revisions</primary>
+              <secondary>keywords</secondary>
+-->
+              <primary>Revisionen</primary>
+              <secondary>Schlüsselworte</secondary>
+              <tertiary>BASE</tertiary>
+            </indexterm>
  <!--
              <para>The revision number of an item in a working copy.
                If the item has been locally modified, this refers to
@@ -221,6 +233,18 @@
          <varlistentry>
            <term><literal>COMMITTED</literal></term>
            <listitem>
+            <indexterm>
+              <primary>COMMITTED</primary>
+            </indexterm>
+            <indexterm>
+<!--
+              <primary>revisions</primary>
+              <secondary>keywords</secondary>
+-->
+              <primary>Revisionen</primary>
+              <secondary>Schlüsselworte</secondary>
+              <tertiary>COMMITTED</tertiary>
+            </indexterm>
  <!--
              <para>The most recent revision prior to, or equal to,
                <literal>BASE</literal>, in which an item changed.</para>
@@ -234,16 +258,28 @@
          <varlistentry>
            <term><literal>PREV</literal></term>
            <listitem>
+            <indexterm>
+              <primary>PREV</primary>
+            </indexterm>
+            <indexterm>
+<!--
+              <primary>revisions</primary>
+              <secondary>keywords</secondary>
+-->
+              <primary>Revisionen</primary>
+              <secondary>Schlüsselworte</secondary>
+              <tertiary>PREV</tertiary>
+            </indexterm>
  <!--
              <para>The revision immediately <emphasis>before</emphasis>
                the last revision in which an item changed.
                Technically, this boils down to
-              <literal>COMMITTED</literal>−1.</para>
+              <literal>COMMITTED</literal>-1.</para>
  -->
              <para>Die Revision unmittelbar <emphasis>vor</emphasis>
                der letzten Revision, in der ein Objekt verändert wurde.
                Technisch bedeutet das
-              <literal>COMMITTED</literal>−1.</para>
+              <literal>COMMITTED</literal>-1.</para>
            </listitem>
          </varlistentry>

@@ -274,7 +310,8 @@
          Revisions-Schlüsselworten:</para>

  <!--
-      <screen>
+      <informalexample>
+        <screen>
  $ svn diff -r PREV:COMMITTED foo.c
  # shows the last change committed to foo.c

@@ -300,9 +337,11 @@
  # compares the unmodified version of foo.c with the way foo.c looked
  # in revision 14
  </screen>
+      </informalexample>
  -->

-      <screen>
+      <informalexample>
+        <screen>
  $ svn diff -r PREV:COMMITTED foo.c
  # zeigt die letzte übergebene Änderung von foo.c an

@@ -330,6 +369,7 @@
  # vergleicht die unmodifizierte Version von foo.c mit foo.c in der
  # Revision 14
  </screen>
+      </informalexample>

      </sect2>

@@ -343,10 +383,10 @@
        <indexterm>
  <!--
          <primary>revisions</primary>
-        <secondary>specified as dates</secondary>
+        <secondary>as dates</secondary>
  -->
          <primary>Revisionen</primary>
-        <secondary>als Datum angegeben</secondary>
+        <secondary>als Datum</secondary>
        </indexterm>

  <!--
@@ -358,8 +398,7 @@
          specifiers wrapped in curly braces (<literal>{</literal> and
          <literal>}</literal>).  Subversion accepts the standard
          ISO-8601 date and time formats, plus a few others.  Here are
-        some examples.  (Remember to use quotes around any date that
-        contains spaces.)</para>
+        some examples.</para>
  -->
        <para>Revisionsnummern offenbaren nichts über die Welt außerhalb
          des Versionskontrollsystems, doch manchmal müssen Sie einen
@@ -369,11 +408,10 @@
          Datumsangaben in geschweiften Klammern (<literal>{</literal>
          und <literal>}</literal>). Subversion akzeptiert die
          standardisierten ISO-8601 Datums- und Zeitformate und ein paar
-        weitere. Hier sind einige Beispiele. (Denken Sie daran, bei
-        Daten die Leerzeichen enthalten, Anführungszeichen zu
-        verwenden.)</para>
+        weitere. Hier sind einige Beispiele.</para>

-      <screen>
+      <informalexample>
+        <screen>
  $ svn checkout -r {2006-02-17}
  $ svn checkout -r {15:30}
  $ svn checkout -r {15:30:00.200000}
@@ -387,6 +425,28 @@
  $ svn checkout -r {20060217T1530-0500}
  …
  </screen>
+      </informalexample>
+
+<!--
+      <note>
+        <para>Keep in mind that most shells will require you to, at a
+          minimum, quote or otherwise escape any spaces that are
+          included as part of revision date specifiers.  Certain
+          shells may also take issue with the unescaped use of curly
+          brances, too.  Consult your shell's documentation for the
+          requirements specific to your environment.</para>
+      </note>
+-->
+      <note>
+        <para>Beachten Sie, dass es die meisten Shells erforderlich
+          machen, mindestens Leerzeichen in Anführungsstriche zu
+          setzen oder anderweitig zu maskieren, wenn sie Teile von
+          Revisionsdaten-Spezifizierungen sind. Bestimmte Shells
+          könnten auch Probleme mit der unmaskierten Verwendung von
+          geschweiften Klammern bekommen. Schlagen Sie in der
+          Dokumentation Ihrer Shell nach, was in Ihrer Umgebung
+          notwendig ist.</para>
+      </note>

  <!--
        <para>When you specify a date, Subversion resolves that date to
@@ -398,12 +458,14 @@
          Datum in die letzte Revision zum Zeitpunkt dieses Datums um
          und verwendet dann die entsprechende Revisionsnummer:</para>

-      <screen>
+      <informalexample>
+        <screen>
  $ svn log -r {2006-11-28}
  ------------------------------------------------------------------------
  r12 | ira | 2006-11-27 12:31:51 -0600 (Mon, 27 Nov 2006) | 6 lines
  …
  </screen>
+      </informalexample>

        <sidebar>
  <!--
@@ -457,10 +519,12 @@
          dann alle Revisionen zwischen den und einschließlich der
          Daten:</para>

-      <screen>
+      <informalexample>
+        <screen>
  $ svn log -r {2006-11-20}:{2006-11-29}
  …
  </screen>
+      </informalexample>

        <warning>
  <!--
@@ -496,6 +560,687 @@

      </sect2>

+  </sect1>
+
+  <!-- =================================================================  
-->
+  <!-- =================================================================  
-->
+  <!-- =================================================================  
-->
+  <sect1 id="svn.advanced.pegrevs">
+<!--
+    <title>Peg and Operative Revisions</title>
+-->
+    <title>Peg- und operative Revisionen</title>
+
+<!--
+    <para>We copy, move, rename, and completely replace files and
+      directories on our computers all the time.  And your version
+      control system shouldn't get in the way of your doing these
+      things with your version-controlled files and directories,
+      either.  Subversion's file management support is quite
+      liberating, affording almost as much flexibility for versioned
+      files as you'd expect when manipulating your unversioned ones.
+      But that flexibility means that across the lifetime of your
+      repository, a given versioned object might have many paths, and
+      a given path might represent several entirely different
+      versioned objects.  This introduces a certain level of
+      complexity to your interactions with those paths and
+      objects.</para>
+-->
+    <para>Dateien und Verzeichnisse werden auf unseren Rechnern
+      ständig kopiert, verschoben, umbenannt und vollständig
+      ersetzt. Ihr Versionskontrollsystem sollte nicht im Weg stehen,
+      wenn Sie diese Dinge auch mit Dateien und Verzeichnissen unter
+      Versionskontrolle machen. Die Dateiverwaltungsunterstützung von
+      Subversion ist sehr befreiend, indem sie beinahe die gleiche
+      Flexibilität bei versionierten Dateien erlaubt, die Sie bei
+      der Handhabung unversionierter Dateien erwarten. Diese
+      Flexibilität bedeutet aber, dass während der Lebenszeit Ihres
+      Projektarchivs ein gegebenes versioniertes Objekt viele Pfade
+      haben kann, und ein gegebener Pfad verschiedene vollständig
+      unterschiedliche versionierte Objekte repräsentieren kann. Das
+      fügt Ihrer Arbeit mit diesen Pfaden und Objekten einen gewissen
+      Grad an Komplexität hinzu.</para>
+
+<!--
+    <para>Subversion is pretty smart about noticing when an object's
+      version history includes such <quote>changes of address.</quote>
+      For example, if you ask for the revision history log of a
+      particular file that was renamed last week, Subversion happily
+      provides all those logs—the revision in which the rename
+      itself happened, plus the logs of relevant revisions both before
+      and after that rename.  So, most of the time, you don't even
+      have to think about such things.  But occasionally, Subversion
+      needs your help to clear up ambiguities.</para>
+-->
+    <para>Subversion ist ziemlich schlau, wenn es darum geht,
+      festzustellen, wann die Versionsgeschichte eines Objektes eine
+      solche <quote>Adressänderung</quote> beinhaltet. Wenn Sie
+      beispielsweise das Protokoll der Versionsgeschichte einer
+      bestimmten Datei abfragen, die letzte Woche umbenannt wurde,
+      wird Subversion erfreulicherweise all diese Protokolleinträge
+      liefern – die Revision, in der die Umbenennung vorgenommen
+      wurde und die wichtigen Einträge aus der Zeit vor und nach der
+      Umbenennung. Meistens brauchen Sie sich also nicht um solche
+      Dinge zu kümmern. Doch ist Subversion gelegentlich auf Ihre
+      Hilfe angewiesen, um Unklarheiten aufzuklären.</para>
+
+<!--
+    <para>The simplest example of this occurs when a directory or file
+      is deleted from version control, and then a new directory or
+      file is created with the same name and added to version control.
+      The thing you deleted and the thing you later added aren't the
+      same thing.  They merely happen to have had the same
+      path—<filename>/trunk/object</filename>, for example.
+      What, then, does it mean to ask Subversion about the history of
+      <filename>/trunk/object</filename>?  Are you asking about the
+      thing currently at that location, or the old thing you deleted
+      from that location?  Are you asking about the operations that
+      have happened to <emphasis>all</emphasis> the objects that have
+      ever lived at that path?  Subversion needs a hint about what you
+      really want.</para>
+-->
+    <para>Das einfachste Beispiel hierfür tritt auf, falls ein
+      Verzeichnis oder eine Datei aus der Versionskontrolle gelöscht
+      und dann ein neues Verzeichnis oder eine neue Datei gleichen
+      Namens erzeugt und unter Versionskontrolle gestellt wird. Bei
+      dem Ding, das Sie gelöscht haben und dem, das Sie später
+      hinzugefügt haben handelt es sich nicht um das selbe Ding. Sie
+      haben lediglich den gleichen Pfad gehabt, beispielsweise
+      <filename>/trunk/object</filename>. Was bedeutet es dann,
+      Subversion nach der Geschichte von
+      <filename>/trunk/object</filename> zu fragen? Fragen Sie nach
+      dem Ding, das sich momentan an diesem Ort befindet oder dem
+      alten Ding, das Sie von dort gelöscht haben? Fragen Sie nach den
+      Arbeiten, die an <emphasis>allen</emphasis> Objekten
+      stattgefunden haben, die sich jemals unter diesem Pfad befunden
+      haben? Subversion benötigt einen Hinweis darauf, was Sie
+      wirklich möchten.</para>
+
+<!--
+    <para>And thanks to moves, versioned object history can get far
+      more twisted than even that.  For example, you might have a
+      directory named <filename>concept</filename>, containing some
+      nascent software project you've been toying with.  Eventually,
+      though, that project matures to the point that the idea seems to
+      actually have some wings, so you do the unthinkable and decide
+      to give the project a name.<footnote><para><quote>You're not
+      supposed to name it.  Once you name it, you start getting
+      attached to it.</quote>—Mike Wazowski</para></footnote>
+      Let's say you called your software Frabnaggilywort.  At this
+      point, it makes sense to rename the directory to reflect the
+      project's new name, so <filename>concept</filename> is renamed
+      to <filename>frabnaggilywort</filename>.  Life goes on,
+      Frabnaggilywort releases a 1.0 version and is downloaded and
+      used daily by hordes of people aiming to improve their
+      lives.</para>
+-->
+    <para>Durch Verschiebungen kann die Versionsgeschichte sogar
+      weitaus komplizierter werden. Sie haben beispielsweise ein
+      Verzeichnis namens <filename>concept</filename>, das ein im
+      Werden begriffenes Software-Projekt beinhaltet, mit dem Sie
+      herumgespielt haben. Schließlich reift das Projekt soweit
+      heran, dass die Idee Flügel bekommen zu haben scheint, was
+      Sie das Undenkbare machen lässt: dem Projekt einen Namen geben.
+      <footnote><para><quote>Sie sollten es nicht mit einem Namen
+      versehen.  Sobald Sie es mit einem Namen versehen, beginnen Sie,
+      sich mit ihm verbunden zu fühlen.</quote> – Mike
+      Wazowski</para></footnote> Nehmen wir an, Sie haben Ihre
+      Software Frabnaggilywort genannt.  Zu diesem Zeitpunkt erscheint
+      es sinnvoll, das Verzeichnis umzubenennen, um den neuen Namen
+      des Projektes widerzuspiegeln, also wird
+      <filename>concept</filename> umbenannt in
+      <filename>frabnaggilywort</filename>. Das Leben geht weiter, und
+      von Frabnaggilywort wird eine Version 1.0 veröffentlicht, die
+      von Massen an Menschen, die ihr Leben zu verbessern trachten,
+      heruntergeladen und täglich benutzt werden.</para>
+
+<!--
+    <para>It's a nice story, really, but it doesn't end there.
+      Entrepreneur that you are, you've already got another think in
+      the tank.  So you make a new directory,
+      <filename>concept</filename>, and the cycle begins again.  In
+      fact, the cycle begins again many times over the years, each
+      time starting with that old <filename>concept</filename>
+      directory, then sometimes seeing that directory renamed as the
+      idea cures, sometimes seeing it deleted when you scrap the idea.
+      Or, to get really sick, maybe you rename
+      <filename>concept</filename> to something else for a while, but
+      later rename the thing back to <filename>concept</filename> for
+      some reason.</para>
+-->
+    <para>Dies ist eine wirklich schöne Geschichte, die hier aber
+      nicht endet. Als echter Unternehmer gehen Sie bereits mit der
+      nächsten Idee schwanger. Also erstellen Sie ein neues
+      Verzeichnis <filename>concept</filename>, und der Zyklus beginnt
+      erneut. Tatsächlich startet dieser Zyklus sehr oft neu über die
+      Jahre, jedes Mal mit dem alten Verzeichnis
+      <filename>concept</filename>, das manchmal umbenannt wird, falls
+      die Idee reift, manchmal jedoch gelöscht wird, wenn die Idee
+      verworfen wird. Oder, um es auf die Spitze zu treiben, Sie
+      benennen <filename>concept</filename> für eine Weile in etwas
+      anderes um, aber aus irgend einem Grund taufen Sie es später
+      wieder <filename>concept</filename>.</para>
+
+<!--
+    <para>In scenarios like these, attempting to instruct
+      Subversion to work with these reused paths can be a little like
+      instructing a motorist in Chicago's West Suburbs to drive east
+      down Roosevelt Road and turn left onto Main Street.  In a mere
+      20 minutes, you can cross <quote>Main Street</quote> in
+      Wheaton, Glen Ellyn, and Lombard.  And no, they aren't the same
+      street.  Our motorist—and our Subversion—need a
+      little more detail to do the right thing.</para>
+-->
+    <para>In Szenarios wie diesem, verhält sich der Versuch,
+      Subversion aufzufordern, mit diesen wiederverwendeten Pfaden zu
+      arbeiten, ähnlich, wie einem Autofahrer in den westlichen
+      Vororten Chicagos zu erklären, die Roosevelt Road ostwärts zu
+      fahren und links in die Main Street abzubiegen. In nur zwanzig
+      Minuten können Sie die <quote>Main Street</quote> in
+      Wheaton, Glen Ellyn und Lombard kreuzen. Aber das ist keineswegs
+      die selbe Straße. Unser Autofahrer – und Subversion
+      – benötigen etwas mehr Details, um das Richtige machen zu
+      können.</para>
+
+<!--
+    <para>Fortunately, Subversion allows you to tell it exactly which
+      Main Street you meant.  The mechanism used is called a
+      <firstterm>peg revision</firstterm>, and you provide these to
+      Subversion for the sole purpose of identifying unique lines of
+      history.  Because at most one versioned object may occupy a path
+      at any given time—or, more precisely, in any one
+      revision—the combination of a path and a peg revision is
+      all that is needed to unambiguously identify a specific line
+      of history.  Peg revisions are specified to the Subversion
+      command-line client using <firstterm>at syntax</firstterm>, so
+      called because the syntax involves appending an <quote>at
+      sign</quote> (<literal>@</literal>) and the peg revision to the
+      end of the path with which the revision is associated.</para>
+-->
+    <para>Glücklicherweise erlaubt es Subversion Ihnen, zu sagen,
+      welche Main Street Sie genau meinten. Der verwendete Mechanismus
+      wird <firstterm>Peg-Revision</firstterm> genannt und Sie geben
+      ihn Subversion alleinig zu dem Zweck mit, eindeutige Linien in
+      der Historie zu identifizieren. Da zu einer gegebenen Zeit
+      höchstens ein versioniertes Objekt einen Pfad belegen kann
+      – oder, genauer, in irgend einer Revision – wird zum
+      Referenzieren einer bestimmten Linie in der Historie lediglich
+      die Kombination aus Pfad und Peg-Revision benötigt.
+      Peg-Revisionen werden dem Subversion-Kommandozeilen-Client in
+      <firstterm>At-Syntax</firstterm> mitgegeben, die so genannt
+      wird, da diese Syntax das Anhängen eines
+      <quote>At-Zeichens</quote> (<literal>@</literal>) und die
+      Peg-Revision an das Ende des mit der Revision verbundenen Pfades
+      vorsieht.</para>
+
+<!--
+    <para>But what of the <option>- -revision</option>
+      (<option>-r</option>) of which we've spoken so much in this
+      book?  That revision (or set of revisions) is called the
+      <firstterm>operative revision</firstterm> (or
+      <firstterm>operative revision range</firstterm>).  Once a
+      particular line of history has been identified using a path and
+      peg revision, Subversion performs the requested operation using
+      the operative revision(s).  To map this to our Chicagoland
+      streets analogy, if we are told to go to 606 N. Main Street in
+      Wheaton,<footnote><para>606 N. Main Street, Wheaton, Illinois,
+      is the home of the Wheaton <emphasis>History</emphasis> Center.
+      It seemed appropriate….</para></footnote> we can think
+      of <quote>Main Street</quote> as our path and
+      <quote>Wheaton</quote> as our peg revision.  These two pieces of
+      information identify a unique path that can be traveled (north or
+      south on Main Street), and they keep us from traveling up and
+      down the wrong Main Street in search of our destination.  Now we
+      throw in <quote>606 N.</quote> as our operative revision of
+      sorts, and we know <emphasis>exactly</emphasis> where to
+      go.</para>
+-->
+    <para>Doch was ist mit der Option <option>--revision</option>
+      (<option>-r</option>), von der wir in diesem Buch so oft
+      gesprochen haben? Diese Revision (oder Menge von Revisionen)
+      wird  <firstterm>operative Revision</firstterm> (oder
+      <firstterm>operativer Revisionsbereich</firstterm>) genannt.
+      Sobald durch den Pfad und die Peg-Revision eine bestimmte Linie
+      in der Historie identifiziert ist, führt Subversion die
+      verlangte Operation mit der/dem operativen
+      Revision/Revisionsbereich aus. Auf die Analogie mit den
+      Chicagoer Straßen angewendet, bedeutet das, wenn wir
+      aufgefordert werden, zu 606 N. Main Street in Wheaton
+      <footnote><para>606 N. Main Street, Wheaton, Illinois, ist die
+      Heimat des Wheaton <emphasis>Geschichts</emphasis>-Zentrums.  Es
+      erschien angebracht….</para></footnote> zu gehen, können
+      wir uns <quote>Main Street</quote> als unseren Pfad vorstellen
+      und <quote>Wheaton</quote> als unsere Peg-Revision. Diese beiden
+      Teile an Informationen identifizieren einen eindeutigen Pfad,
+      der begangen werden kann (nördlich oder südlich auf der Main
+      Street), und es hält uns davon ab, auf der Suche nach unserem
+      Ziel, die falsche Main Street herauf oder herunter zu laufen.
+      Nun fügen wir noch <quote>606 N.</quote> quasi als operative
+      Revision hinzu, und wir wissen <emphasis>genau</emphasis>, wo
+      wir hin müssen.</para>
+
+    <sidebar id="svn.advanced.pegrevs.algorithm">
+<!--
+      <title>The Peg Revision Algorithm</title>
+-->
+      <title>Der Algorithmus für Peg-Revisionen</title>
+
+<!--
+      <para>The Subversion command-line client performs the peg revision
+        algorithm any time it needs to resolve possible ambiguities in
+        the paths and revisions provided to it.  Here's an example of
+        such an invocation:</para>
+-->
+      <para>Der Kommandozeilen-Client von Subversion führt den
+        Peg-Revisions-Algorithmus immer dann aus, wenn er mögliche
+        Mehrdeutigkeiten in den übergebenen Pfaden und Revisionen
+        auflösen muss. Hier ist ein Beispiel für einen solchen
+        Aufruf:</para>
+
+      <informalexample>
+        <screen>
+$ svn <replaceable>command</replaceable> -r  
<replaceable>OPERATIVE-REV</replaceable>  
item@<replaceable>PEG-REV</replaceable>
+</screen>
+      </informalexample>
+
+<!--
+      <para>If <replaceable>OPERATIVE-REV</replaceable> is older than
+        <replaceable>PEG-REV</replaceable>, the algorithm is as
+        follows:</para>
+-->
+      <para>Falls <replaceable>OPERATIVE-REV</replaceable> älter als
+        <replaceable>PEG-REV</replaceable> ist, lautet der Algorithmus
+        wie folgt:</para>
+
+      <orderedlist>
+        <listitem>
+<!--
+          <para>Locate <replaceable>item</replaceable> in the revision
+            identified by <replaceable>PEG-REV</replaceable>.  There
+            can be only one such object.</para>
+-->
+          <para>Ermittle den Ort von <replaceable>item</replaceable>
+            in der durch <replaceable>PEG-REV</replaceable>
+            identifizierten Revision. Es kann nur ein solches Objekt
+            geben.</para>
+        </listitem>
+        <listitem>
+<!--
+          <para>Trace the object's history backwards (through any
+            possible renames) to its ancestor in the revision
+            <replaceable>OPERATIVE-REV</replaceable>.</para>
+-->
+          <para>Verfolge die Geschichte des Objektes rückwärts (durch
+            mögliche Umbenennungen hindurch) bis seinem Vorgänger in
+            der Revision
+            <replaceable>OPERATIVE-REV</replaceable>.</para>
+        </listitem>
+        <listitem>
+<!--
+          <para>Perform the requested action on that ancestor,
+            wherever it is located, or whatever its name might
+            be or might have been at that time.</para>
+-->
+          <para>Führe die gewünschte Aktion auf diesem Vorgänger aus,
+            egal wo er sich befindet oder wie er heißt oder
+            damals hieß.</para>
+        </listitem>
+      </orderedlist>
+
+<!--
+      <para>But what if <replaceable>OPERATIVE-REV</replaceable> is
+        <emphasis>younger</emphasis> than
+        <replaceable>PEG-REV</replaceable>?  Well, that adds some
+        complexity to the theoretical problem of locating the path in
+        <replaceable>OPERATIVE-REV</replaceable>, because the path's
+        history could have forked multiple times (thanks to copy
+        operations) between <replaceable>PEG-REV</replaceable> and
+        <replaceable>OPERATIVE-REV</replaceable>.  And that's not
+        all—Subversion doesn't store enough information to
+        performantly trace an object's history forward, anyway.  So
+        the algorithm is a little different:</para>
+-->
+      <para>Aber was ist, falls <replaceable>OPERATIVE-REV</replaceable>
+        <emphasis>jünger</emphasis> ist als
+        <replaceable>PEG-REV</replaceable>? Nun, das erhöht den
+        Aufwand für das theoretische Problem der Ermittlung des Pfades
+        in <replaceable>OPERATIVE-REV</replaceable> etwas komplexer,
+        da die Geschichte des Pfades sich aufgrund von Kopiervorgängen
+        zwischen <replaceable>PEG-REV</replaceable> und
+        <replaceable>OPERATIVE-REV</replaceable> vervielfältigt haben
+        könnte. Aber das ist noch nicht alles – Subversion
+        speichert nicht genug Informationen, um die Geschichte eines
+        Objektes auf performante Weise vorwärts zu verfolgen. Also ist
+        der Algorithmus anders:</para>
+
+      <orderedlist>
+        <listitem>
+<!--
+          <para>Locate <replaceable>item</replaceable> in the revision
+            identified by <replaceable>OPERATIVE-REV</replaceable>.  There
+            can be only one such object.</para>
+-->
+          <para>Ermittle den Ort von <replaceable>item</replaceable>
+            in der durch <replaceable>OPERATIVE-REV</replaceable>
+            identifizierten Revision. Es kann nur ein solches Objekt
+            geben.</para>
+        </listitem>
+        <listitem>
+<!--
+          <para>Trace the object's history backward (through any
+            possible renames) to its ancestor in the revision
+            <replaceable>PEG-REV</replaceable>.</para>
+-->
+          <para>Verfolge die Geschichte des Objektes rückwärts (durch
+            mögliche Umbenennungen hindurch) bis seinem Vorgänger in
+            der Revision <replaceable>PEG-REV</replaceable>.</para>
+        </listitem>
+        <listitem>
+<!--
+          <para>Verify that the object's location (path-wise) in
+            <replaceable>PEG-REV</replaceable> is the same as it is in
+            <replaceable>OPERATIVE-REV</replaceable>.  If that's the
+            case, at least the two locations are known to be
+            directly related, so perform the requested action on the
+            location in <replaceable>OPERATIVE-REV</replaceable>.
+            Otherwise, relatedness was not established, so error out
+            with a loud complaint that no viable location was found.
+            (Someday, we expect that Subversion will be able to handle
+            this usage scenario with more flexibility and
+            grace.)</para>
+-->
+          <para>Stelle sicher, dass der (pfadmäßige) Ort des Objekts in
+            <replaceable>PEG-REV</replaceable> der selbe ist wie in
+            <replaceable>OPERATIVE-REV</replaceable>. Falls das der
+            Fall ist, stehen mindestens zwei Orte direkt miteinander
+            in Beziehung, so dass die gewünschte Aktion am Ort von
+            <replaceable>OPERATIVE-REV</replaceable> durchgeführt
+            werden kann. Falls nicht, konnte keine Beziehung
+            hergestellt werden, so dass eine Fehlermeldung ausgegeben
+            wird, das kein brauchbarer Ort ermittelt werden konnte.
+            (Wir erwarten, dass Subversion eines Tages in der Lage
+            sein wird, diesen Anwendungsfall flexibler und höflicher
+            zu behandeln.)</para>
+        </listitem>
+      </orderedlist>
+
+<!--
+      <para>Note that even when you don't explicitly supply a peg
+        revision or operative revision, they are still present.  For
+        your convenience, the default peg revision is
+        <literal>BASE</literal> for working copy items and
+        <literal>HEAD</literal> for repository URLs.  And when no
+        operative revision is provided, it defaults to being the same
+        revision as the peg revision.</para>
+-->
+      <para>Beachten Sie, dass Peg-Revisionen auch dann vorhanden sind,
+        falls Sie keine Peg- oder operative Revision angeben. Der
+        Einfachheit halber ist die standardmäßige Peg-Revision für
+        Objekte in der Arbeitskopie <literal>BASE</literal> und
+        <literal>HEAD</literal> für URLs im Projektarchiv. Und wird
+        keine operative Revision angegeben, wird standardmäßig die
+        selbe Revision wie die Peg-Revision angenommen.</para>
+
+    </sidebar>
+
+<!--
+    <para>Say that long ago we created our repository, and in revision 1
+      we added our first <filename>concept</filename> directory, plus an
+      <filename>IDEA</filename> file in that directory talking about
+      the concept.  After several revisions in which real code was
+      added and tweaked, we, in revision 20, renamed this directory to
+      <filename>frabnaggilywort</filename>.  By revision 27, we had a
+      new concept, a new <filename>concept</filename> directory to
+      hold it, and a new <filename>IDEA</filename> file to describe
+      it.  And then five years and thousands of revisions flew by,
+      just like they would in any good romance story.</para>
+-->
+    <para>Angenommen, dass unser Projektarchiv vor langer Zeit
+      angelegt wurde, und wir in Revision 1 das erste Verzeichnis
+      <filename>concept</filename> anlegten, darin  eine Datei
+      <filename>IDEA</filename>, die das Konzept beschreibt. Nach
+      einigen Revisionen, in denen echter Quellcode hinzugefügt und
+      verändert wurde, benannten wir in Revision 20 dieses Verzeichnis
+      in <filename>frabnaggilywort</filename> um. Bis Revision 27
+      hatten wir ein neues Konzept, ein neues
+      <filename>concept</filename>-Verzeichnis dafür und eine neue
+      Datei <filename>IDEA</filename> zur Beschreibung. Dann zogen
+      fünf Jahre und tausende Revisionen ins Land wie es auch in jeder
+      guten Liebesgeschichte passiert.</para>
+
+<!--
+    <para>Now, years later, we wonder what the
+      <filename>IDEA</filename> file looked like back in revision 1.
+      But Subversion needs to know whether we are asking about how the
+      <emphasis>current</emphasis> file looked back in revision 1, or
+      whether we are asking for the contents of whatever file lived at
+      <filename>concepts/IDEA</filename> in revision 1.  Certainly
+      those questions have different answers, and because of peg
+      revisions, you can ask those questions.  To find out how the
+      current <filename>IDEA</filename> file looked in that old
+      revision, you run:</para>
+-->
+    <para>Nun, Jahre später, fragen wir uns, wie die Datei
+      <filename>IDEA</filename> damals in Revision 1 aussah.
+      Subversion muss jedoch wissen, ob wir nach der
+      <emphasis>aktuellen</emphasis> Datei in Revision 1 fragen oder
+      nach dem Inhalt irgendeiner Datei, die in Revision 1 an der
+      Stelle <filename>concepts/IDEA</filename> zu finden war.
+      Sicherlich haben diese Fragen unterschiedliche Antworten, und
+      Dank der Peg-Revisionen können Sie danach fragen. Um zu sehen,
+      wie die aktuelle Datei <filename>IDEA</filename> in dieser alten
+      Revision aussah, tippen Sie:</para>
+
+<!--
+    <informalexample>
+      <screen>
+$ svn cat -r 1 concept/IDEA
+svn: Unable to find repository location for 'concept/IDEA' in revision 1
+</screen>
+    </informalexample>
+-->
+    <informalexample>
+      <screen>
+$ svn cat -r 1 concept/IDEA
+svn: Kann »concept/IDEA« in Revision 1 nicht im Projektarchiv finden
+</screen>
+    </informalexample>
+
+<!--
+    <para>Of course, in this example, the current
+      <filename>IDEA</filename> file didn't exist yet in revision 1,
+      so Subversion gives an error.  The previous command is shorthand
+      for a longer notation which explicitly lists a peg revision.
+      The expanded notation is:</para>
+-->
+    <para>In diesem Beispiel gab es die aktuelle Datei
+      <filename>IDEA</filename> natürlich noch nicht in Revision 1, so
+      dass Subversion einen Fehler ausgibt. Der letzte Befehl ist eine
+      Kurzform der längeren Form, die explizit eine Peg-Revision
+      aufführt. Die ausführliche Notation lautet:</para>
+
+<!--
+    <informalexample>
+      <screen>
+$ svn cat -r 1 concept/IDEA at BASE
+svn: Unable to find repository location for 'concept/IDEA' in revision 1
+</screen>
+    </informalexample>
+-->
+    <informalexample>
+      <screen>
+$ svn cat -r 1 concept/IDEA at BASE
+svn: Kann »concept/IDEA« in Revision 1 nicht im Projektarchiv finden
+</screen>
+    </informalexample>
+
+<!--
+    <para>And when executed, it has the expected results.</para>
+-->
+    <para>Beim Ausführen kommt es dann zum erwarteten Ergebnis.</para>
+
+<!--
+    <para>The perceptive reader is probably wondering at this point whether
+      the peg revision syntax causes problems for working copy paths
+      or URLs that actually have at signs in them.  After
+      all, how does <command>svn</command> know whether
+      <literal>news at 11</literal> is the name of a directory in my
+      tree or just a syntax for <quote>revision 11 of
+      <filename>news</filename></quote>?  Thankfully, while
+      <command>svn</command> will always assume the latter, there is a
+      trivial workaround.  You need only append an at sign to the
+      end of the path, such as <literal>news at 11@</literal>.
+      <command>svn</command> cares only about the last at sign in
+      the argument, and it is not considered illegal to omit a literal
+      peg revision specifier after that at sign.  This workaround
+      even applies to paths that end in an at sign—you would
+      use <literal>filename@@</literal> to talk about a file named
+      <filename>filename@</filename>.</para>
+-->
+    <para>Der scharfsinnige Leser fragt sich an dieser Stelle
+      wahrscheinlich, ob die Syntax der Peg-Revisionen problematisch
+      für Pfade in Arbeitskopien oder URLs sein kann, die At-Zeichen
+      beinhalten. Woher weiß <command>svn</command> letztendlich, ob
+      <literal>news at 11</literal> der Name eines Verzeichnisses in
+      meinem Baum ist oder nur die Syntax für <quote>Revision 11 von
+        <filename>news</filename></quote>? Während
+      <command>svn</command> stets letzteres annimmt, gibt es
+      glücklicherweise eine Abhilfe. Sie brauchen lediglich ein
+      At-Zeichen am Ende des Pfades anfügen, etwa
+      <literal>news at 11@</literal>.  <command>svn</command> schert sich
+      nur um das letzte At-Zeichen im Argument, und es ist nicht
+      verboten, nach dem At-Zeichen die Angabe der Peg-Revision
+      auszulassen. Diese Abhilfe gilt sogar für Pfade, die auf ein
+      At-Zeichen enden – Sie würden
+      <literal>filename@@</literal> verwenden, um sich auf eine Datei
+      namens <filename>filename@</filename> zu beziehen..</para>
+
+<!--
+    <para>Let's ask the other question, then—in revision 1, what
+      were the contents of whatever file occupied the address
+      <filename>concepts/IDEA</filename> at the time?  We'll use an
+      explicit peg revision to help us out.</para>
+-->
+    <para>Stellen wir nun die andere Frage. Was war der Inhalt der
+      Datei, die sich zum Zeitpunkt von Revision 1 am Ort von
+      <filename>concepts/IDEA</filename> befand? Um das
+      herauszufinden, verwenden wir eine explizite
+      Peg-Revision.</para>
+
+    <informalexample>
+      <screen>
+$ svn cat concept/IDEA at 1
+The idea behind this project is to come up with a piece of software
+that can frab a naggily wort.  Frabbing naggily worts is tricky
+business, and doing it incorrectly can have serious ramifications, so
+we need to employ over-the-top input validation and data verification
+mechanisms.
+</screen>
+    </informalexample>
+
+<!--
+    <para>Notice that we didn't provide an operative revision this
+      time.  That's because when no operative revision is specified,
+      Subversion assumes a default operative revision that's the same
+      as the peg revision.</para>
+-->
+    <para>Beachten Sie, dass wir dieses Mal keine operative Revision
+      angegeben haben. Wenn nämlich keine operative Revision angegeben
+      wird, nimmt Subversion standardmäßig an, dass die operative
+      Revision die selbe wie die Peg-Revision ist.</para>
+
+<!--
+    <para>As you can see, the output from our operation appears to be
+      correct.  The text even mentions frabbing naggily worts, so this
+      is almost certainly the file that describes the software now
+      called Frabnaggilywort.  In fact, we can verify this using the
+      combination of an explicit peg revision and explicit operative
+      revision.  We know that in <literal>HEAD</literal>, the
+      Frabnaggilywort project is located in the
+      <filename>frabnaggilywort</filename> directory.  So we specify
+      that we want to see how the line of history identified in
+      <literal>HEAD</literal> as the path
+      <filename>frabnaggilywort/IDEA</filename> looked in revision
+      1.</para>
+-->
+    <para>Wie Sie sehen, scheint die Ausgabe unserer Operation korrekt
+      zu sein. Der Text erwähnt sogar <quote>frabbing naggily
+        worts</quote>, so dass es höchstwahrscheinlich die Datei ist,
+      die die Software beschreibt, die nun  Frabnaggilywort heißt. Wir
+      können das tatsächlich überprüfen, indem wir die Kombination aus
+      expliziter Peg-Revision und expliziter operativer Revision
+      verwenden. Wir wissen, dass in <literal>HEAD</literal> das
+      Projekt Frabnaggilywort im Verzeichnis
+      <filename>frabnaggilywort</filename> liegt. Also geben wir an,
+      dass wir sehen möchten, wie sich die Historie in Revision 1
+      identifizierte, die in <literal>HEAD</literal> als
+      <filename>frabnaggilywort/IDEA</filename> bekannt ist.</para>
+
+    <informalexample>
+      <screen>
+$ svn cat -r 1 frabnaggilywort/IDEA at HEAD
+The idea behind this project is to come up with a piece of software
+that can frab a naggily wort.  Frabbing naggily worts is tricky
+business, and doing it incorrectly can have serious ramifications, so
+we need to employ over-the-top input validation and data verification
+mechanisms.
+</screen>
+    </informalexample>
+
+<!--
+    <para>And the peg and operative revisions need not be so trivial,
+      either.  For example, say <filename>frabnaggilywort</filename>
+      had been deleted from <literal>HEAD</literal>, but we know it
+      existed in revision 20, and we want to see the diffs for its
+      <filename>IDEA</filename> file between revisions 4 and 10.  We
+      can use peg revision 20 in conjunction with the URL that
+      would have held Frabnaggilywort's <filename>IDEA</filename> file
+      in revision 20, and then use 4 and 10 as our operative revision
+      range.</para>
+-->
+    <para>Auch brauchen Peg und operative Revisionen nicht so trivial
+      zu sein. Sagen wir beispielsweise, das Verzeichnis
+      <filename>frabnaggilywort</filename> sei aus
+      <literal>HEAD</literal> gelöscht, wir wissen aber, dass es in
+      Revision 20 existierte, und wir wollen die Unterschiede der
+      Datei <filename>IDEA</filename> zwischen den Revisionen 4 und 10
+      sehen. Wir können Peg-Revision 20 in Verbindung mit dem URL,
+      verwenden, der sich auf Frabnaggilyworts Datei
+      <filename>IDEA</filename> in Revision 20 bezog, und dann 4 und
+      10 als operativen Revisionsbereich verwenden.</para>
+
+    <informalexample>
+      <screen>
+$ svn diff -r 4:10 http://svn.red-bean.com/projects/frabnaggilywort/IDEA@20
+Index: frabnaggilywort/IDEA
+===================================================================
+--- frabnaggilywort/IDEA	(revision 4)
++++ frabnaggilywort/IDEA	(revision 10)
+@@ -1,5 +1,5 @@
+-The idea behind this project is to come up with a piece of software
+-that can frab a naggily wort.  Frabbing naggily worts is tricky
+-business, and doing it incorrectly can have serious ramifications, so
+-we need to employ over-the-top input validation and data verification
+-mechanisms.
++The idea behind this project is to come up with a piece of
++client-server software that can remotely frab a naggily wort.
++Frabbing naggily worts is tricky business, and doing it incorrectly
++can have serious ramifications, so we need to employ over-the-top
++input validation and data verification mechanisms.
+</screen>
+    </informalexample>
+
+<!--
+    <para>Fortunately, most folks aren't faced with such complex
+      situations.  But when you are, remember that peg revisions are
+      that extra hint Subversion needs to clear up ambiguity.</para>
+-->
+    <para>Glücklicherweise sind die meisten Leute nicht von solch
+      komplizierten Situationen betroffen. Sollte das für Sie aber
+      zutreffen, denken Sie daran, dass es sich bei Peg-Revisionen um
+      diesen extra Hinweis handelt, den Subversion benötigt, um
+      Mehrdeutigkeiten zu beseitigen.</para>
+
    </sect1>

    <!-- =================================================================  
-->
@@ -619,8 +1364,8 @@

  <!--
      <para>Subversion has no particular policy regarding the use of
-      properties.  It asks only that you not use property names that
-      begin with the prefix <literal>svn:</literal>.  That's the
+      properties.  It asks only that you do not use property names that
+      begin with the prefix <literal>svn:</literal> as that's the
        namespace that it sets aside for its own use.  And Subversion
        does, in fact, use properties—both the versioned and
        unversioned variety.  Certain versioned properties have special
@@ -636,8 +1381,8 @@
  -->
      <para>Subversion besitzt keine besondere Richtlinie zur Verwendung
        von Eigenschaften. Es verlangt nur, dass Sie keine Namen für  
Eigenschaften
-      verwenden, die den Präfix <literal>svn:</literal> haben. Dieser
-      Namensraum ist für seine eigene Verwendung reserviert. Und
+      verwenden, die den Präfix <literal>svn:</literal> haben, da dieser
+      Namensraum für seine eigene Verwendung reserviert ist. Und
        Subversion benutzt tatsächlich Eigenschaften – sowohl die
        versionierten als auch die unversionierten. Bestimmte
        versionierte Eigenschaften haben eine besondere Bedeutung oder
@@ -652,6 +1397,39 @@
        vordefinierten Eigenschaften von Subversion finden Sie in <xref
          linkend="svn.ref.properties" />.</para>

+<!--
+    <note>
+      <para>While Subversion automatically attaches properties
+        (<literal>svn:date</literal>, <literal>svn:author</literal>,
+        <literal>svn:log</literal>, and so on) to revisions, it does
+        <emphasis>not</emphasis> presume thereafter the existence of
+        those properties, and neither should you or the tools you use to
+        interact with your repository.  Revision properties can be
+        deleted programmatically or via the client (if allowed by the
+        repository hooks) without damaging Subversion's ability to
+        function.  So, when writing scripts which operate on your
+        Subversion repository data, do not make the mistake of
+        assuming that any particular revision property exists on a
+        revision.</para>
+    </note>
+-->
+    <note>
+      <para>Während Subversion automatisch Eigenschaften
+        (<literal>svn:date</literal>, <literal>svn:author</literal>,
+        <literal>svn:log</literal> usw,) an Revisionen hängt, setzt es
+        nachher die Existenz dieser Eigenschaften
+        <emphasis>nicht</emphasis> voraus, und ebensowenig sollten Sie
+        es oder die Werkzeuge, die Sie verwenden, um mit dem
+        Projektarchiv zu interagieren. Revisionseigenschaften können
+        programmatisch oder mit dem Client gelöscht werden (wenn die
+        Hooks des Projektarchivs das erlauben), ohne dass die
+        Funktionsfähigkeit von Subversion eingeschränkt würde. Wenn
+        Sie also Scripte schreiben, die mit den Daten des
+        Subversion-Projektarchivs arbeiten, sollten Sie nicht den
+        Fehler machen, anzunehmen, das eine bestimmte Eigenschaft
+        einer Revision vorhanden ist.</para>
+    </note>
***The diff for this file has been truncated for email.***


More information about the svnbook-dev mailing list