[svnbook] r4977 committed - [de] Translation: Branching and Merging...

svnbook at googlecode.com svnbook at googlecode.com
Mon Feb 9 23:31:18 CST 2015


Revision: 4977
Author:   jmfelderhoff at gmx.eu
Date:     Tue Feb 10 05:31:01 2015 UTC
Log:      [de] Translation: Branching and Merging
     ** More on Merge Conflicts
     ** Blocking Changes
     ** Merge-Sensitive Logs and Annotations

https://code.google.com/p/svnbook/source/detail?r=4977

Modified:
  /branches/1.8/de/book/ch04-branching-and-merging.xml

=======================================
--- /branches/1.8/de/book/ch04-branching-and-merging.xml	Fri Feb  6  
15:58:40 2015 UTC
+++ /branches/1.8/de/book/ch04-branching-and-merging.xml	Tue Feb 10  
05:31:01 2015 UTC
@@ -4905,14 +4905,13 @@
          dass <filename>doc</filename> und die vier
          <filename>*.c</filename>-Dateien alle in beiden
          Momentaufnahmen des Zweiges vorkommen, die verglichen werden.
-        Das resultierende
-        Delta will den Inhalt der entsprechenden Pfade in Ihrer
-        Arbeitskopie verändern, doch sind diese Pfade in der
-        Arbeitskopie aber nicht vorhanden. Wie auch immer, das
+        Das resultierende Delta will den Inhalt der entsprechenden
+        Pfade in Ihrer Arbeitskopie verändern, doch sind diese Pfade
+        in der Arbeitskopie aber nicht vorhanden. Wie auch immer, das
          Überwiegen von Baumkonflikten bedeutet höchstwahrscheinlich,
-        dass der Benutzer die falschen Bäume miteinander
-        verglichen hat oder Sie machen einen Merge auf das falsche
-        Ziel in der Arbeitskopie; beides sind klassische Zeichen für einen
+        dass der Benutzer die falschen Bäume miteinander verglichen
+        hat oder Sie machen einen Merge auf das falsche Ziel in der
+        Arbeitskopie; beides sind klassische Zeichen für einen
          Anwenderfehler. Falls dies passiert, ist es einfach, alle
          durch das Zusammenführen hervorgerufenen Änderungen rekursiv
          rückgängig zu machen (<userinput>svn revert .
@@ -4932,7 +4931,7 @@
        <informalexample>
          <screen>
  $ svn st
-<!-- TODO: Resolve output question. -->
+
  $ svn merge ^/paint/trunk -r289:291<!--
  - - Merging r290 through r291 into '.':
  -->
@@ -4948,13 +4947,13 @@
  Select: (p) postpone, (df) diff-full, (e) edit, (m) merge,
          (mc) mine-conflict, (tc) theirs-conflict, (s) show all options: p
  -->
+Konflikt in Datei »Makefile« entdeckt.
+Auswahl: (p) später auflösen, (df) Änderungen anzeigen,
+         (e) Dateibearbeiten, (m) Zusammenführung,
+         (mc) eigene Seite des Konflikts,
+         (tc) fremde Seite des Konflikts, (s) alle Optionen anzeigen: p
  Konfliktübersicht:
    Textkonflikte: 1
-Konflikt in Datei »Makefile« entdeckt.
-Conflict discovered in file 'Makefile'.
-Select: (p) postpone, (df) diff-full, (e) edit, (m) merge,
-        (mc) mine-conflict, (tc) theirs-conflict, (s) show all options: p
-
  $ svn st
   M      .
  C       Makefile
@@ -5072,184 +5071,276 @@
          automatisch in den Zweig eingebracht werden.</para>

  <!--
-      <para>Through Subversion 1.7, the only way to block a changeset
-        is to make the system believe that the change has
-        <emphasis>already</emphasis> been merged.  To do this, invoke
-        the merge subcommand with the <option>- -record-only</option>
-        option:</para>
+      <para>To block a changeset you must make Subversion believe that the
+        change has <emphasis>already</emphasis> been merged.  To do this,
+        invoke the merge subcommand with the <option>-  
-record-only</option>
+        option.  The option makes Subversion record mergeinfo as if it had
+        actually performed the merge, but no difference is actually
+        applied:</para>
  -->
-      <para>Die einzige Möglichkeit, über Subversion 1.7 eine
-        Änderungsmenge zu blockieren, besteht darin, dem System
+      <para>Um eine
+        Änderungsmenge zu blockieren müssen Sie Subversion
          vorzugaukeln, dass die Änderung <emphasis>bereits</emphasis>
          eingearbeitet wurde. Dazu rufen Sie den Unterbefehl mit der Option
-        <option>--record-only</option> auf:</para>
+        <option>--record-only</option> auf. Das veranlasst Subversion
+        dazu, Mergeinfo wie bei einem tatsächlichen Merge anzulegen,
+        obwohl kein Diff angewendet worden ist:</para>

        <informalexample>
          <screen>
  $ cd my-calc-branch

-$ svn propget svn:mergeinfo .
-/trunk:1680-3305
-<!--
-# Let's make the metadata list r3328 as already merged.
+$ svn merge ^/calc/trunk -r386:388 --record-only <!--
+- - Recording mergeinfo for merge of r387 through r388 into '.':
  -->
-# In den Metadaten r3328 als bereits zusammengeführt vermerken.
-$ svn merge -c 3328 --record-only ^/calc/trunk <!--
-- - - Recording mergeinfo for merge of r3328 into '.':
--->
-- Aufzeichnung der Informationen für Zusammenführung von r3328 in ».«:
+-- Aufzeichnung der Informationen für Zusammenführung von r387 bis r388 in  
».«:
   U   .
+ <!--
+# Only the mergeinfo is changed-->
+# Nur Mergeinfo wird geändert.
+$ svn st
+ M      .

-$ svn status
-M       .
+$ svn pg svn:mergeinfo -vR<!--
+Properties on '.':-->
+Eigenschaften von ».«:
+  svn:mergeinfo
+    /calc/trunk:341-378,387-388

-$ svn propget svn:mergeinfo .
-/trunk:1680-3305,3328
  <!--
-$ svn commit -m "Block r3328 from being merged to the branch."
--->
-$ svn commit -m "Das Zusammenführen von r3328 mit dem Zweig verhindern."
-…
+$ svn commit -m "Block r387-388 from being merged to my-calc-branch."
+Sending        .
+
+Committed revision 461.-->
+$ svn commit -m "Das Zusammenführen von r387-388 mit my-calc-branch  
verhindern."
+Sende          .
+
+Revision 461 übertragen.
  </screen>
        </informalexample>

  <!--
-      <para>Beginning with Subversion 1.7, <option>- -record-only</option>
+      <para>Since Subversion 1.7, <option>- -record-only</option>
          merges are transitive.  This means that, in addition to recording
          mergeinfo describing the blocked revision(s), any
          <literal>svn:mergeinfo</literal> property differences in the
          merge source are also applied.  For example, let's say we want to
-        block the 'frazzle' feature from ever being merged from
-        <filename>^/trunk</filename> to our
-        <filename>^/branches/proj-X</filename> branch.  We know that all
-        the frazzle work was done on its own branch, which was
-        reintegrated to <filename>trunk</filename> in revision 1055:</para>
+        block the 'paint-python-wrapper' feature from ever being merged  
from
+        <filename>^/paint/trunk</filename> to the
+        <filename>^/paint/branches/paint-1.0.x</filename> branch.  We know
+        the work on this feature was done on its own branch, which was
+        reintegrated to <filename>/paint/trunk</filename> in revision
+        465:</para>
  -->
-      <para>Beginnend mit Subversion 1.7 sind Zusammenführungen mit
+      <para>Seit Subversion 1.7 sind Zusammenführungen mit
          <option>--record-only</option> transitiv. Das bedeutet, dass
          zusätzlich zur Aufzeichnung der Mergeinfo die die
          blockierte(n) Revision(en) beschreiben, alle Unterschiede der
          Eigenschaft <literal>svn:mergeinfo</literal> der Quelle
-        ebenfalls angewendet werden. Sagen wir zum Beispiel mal, dass
-        wir die Zusammenführung der "Frazzle"-Funktionalität von
-        <filename>^/trunk</filename> mit unserem
-        <filename>^/branches/proj-X</filename> Zweig für immer
-        blockieren möchten. Wir wissen, dass die gesamte Arbeit an
-        "Frazzle" auf seinem eigenen Zweig gemacht wurde, der in
-        Revision 1055 wieder in <filename>trunk</filename>
-        eingegliedert wurde:</para>
+        ebenfalls angewendet werden. Sagen wir mal zum Beispiel, dass
+        wir die Zusammenführung der Funktionalität
+        "paint-python-wrapper" von <filename>^/paint/trunk</filename>
+        mit unserem <filename>^/paint/branches/paint-1.0.x</filename>
+        Zweig für immer blockieren möchten. Wir wissen, dass die
+        gesamte Arbeit an dieser Funktionalität auf seinem eigenen
+        Zweig gemacht wurde, der in Revision 465 wieder in
+        <filename>/paint/trunk</filename> eingegliedert wurde:</para>

        <informalexample>
          <screen>
-$ svn log -v ^/trunk -r 1055
-------------------------------------------------------------------------  
<!--
-r1055 | francesca | 2011-09-22 07:40:06 -0400 (Thu, 22 Sep 2011) | 3 lines
+$ svn log -v -r465 ^/paint/trunk
+------------------------------------------------------------------------<!--
+r465 | joe | 2013-02-25 14:05:12 -0500 (Mon, 25 Feb 2013) | 1 line
  Changed paths:
+   M /paint/trunk
+   A /paint/trunk/python (from  
/paint/branches/paint-python-wrapper/python:464)
+
+Reintegrate Paint Python wrapper.
  -->
-r1055 | francesca | 2011-09-22 07:40:06 -0400 (Do, 22. Sep 2011) | 3 Zeilen
+r465 | joe | 2013-02-25 14:05:12 -0500 (Mo, 25. Feb 2013) | 1 Zeile
  Geänderte Pfade:
-   M /trunk
-   M /trunk/src/frazzle.c
-<!--
-Reintegrate the frazzle-feature-branch to trunk.
--->
-Den Frazzle-Zweig wieder in trunk eingegliedert.
+   M /paint/trunk
+   A /paint/trunk/python (von  
/paint/branches/paint-python-wrapper/python:464)
+
+Paint Python Wrapper reintegriert.
+------------------------------------------------------------------------
  </screen>
        </informalexample>

  <!--
-      <para>Because revision 1055 was a reintegrate merge we know
+      <para>Because revision 465 was a reintegrate merge we know
          that mergeinfo was recorded describing the merge:</para>
  -->
-      <para>Da Revision 1055 eine Zusammenführung zur
+      <para>Da Revision 465 eine Zusammenführung zur
          Wiedereingliederung war, wissen wir, dass beschreibende
          Informationen aufgezeichnet wurden:</para>

        <informalexample>
          <screen>
-$ svn diff ^/trunk -c 1055 --depth empty
+$ svn diff ^/paint/trunk --depth empty -c465
  Index: .
  ===================================================================
---- .   (revision 1054)
-+++ .   (revision 1055)
+--- .   (revision 464)
++++ .   (revision 465)
  <!--
  Property changes on: .
  -->
  Eigenschaftsänderungen: .
  ___________________________________________________________________ <!--
-Modified: svn:mergeinfo
-   Merged /branches/frazzle-feature-branch:r997-1003
+Added: svn:mergeinfo
+   Merged /paint/branches/paint-python-wrapper:r463-464
  -->
-Modifiziert: svn:mergeinfo
-   Zusammengeführt /branches/frazzle-feature-branch:r997-1003
+Hinzugefügt: svn:mergeinfo
+   Zusammengeführt /paint/branches/paint-python-wrapper:r463-464
  </screen>
        </informalexample>

  <!--
-      <para>Now simply blocking merges of revision 1055 from
-        <filename>^/trunk</filename> isn't foolproof since someone could
-        merge r996:1003 directly from
-        <filename>^/branches/frazzle-feature-branch</filename>.
+      <para>Now simply blocking merges of revision 465 from
+        <filename>/paint/trunk</filename> isn't foolproof since someone  
could
+        merge r462:464 directly from
+        <filename>/paint/branches/paint-python-wrapper</filename>.
          Fortunately the transitive nature
-        of <option>- -record-only</option> merges in Subversion 1.7
-        prevents this; the <option>- -record-only</option> merge
+        of <option>- -record-only</option> merges prevents this; the
+        <option>- -record-only</option> merge
          applies the <literal>svn:mergeinfo</literal> diff from
-        revision 1055, thus blocking merges directly from the frazzle
-        branch <emphasis>and</emphasis> as it has always done prior to
-        Subversion 1.7, it blocks merges of revision 1055 directly
-        from <filename>^/trunk</filename>:</para>
+        revision 465, thus blocking merges of that change directly from
+        <filename>/paint/trunk</filename> <emphasis>and</emphasis>  
indirectly
+        from <filename>/paint/branches/paint-python-wrapper</filename>:
+        </para>
  -->
        <para>Das einfache Blockieren der Zusammenführungen der Revision
-        1055 von <filename>^/trunk</filename> ist nicht narrensicher,
-        da jemand r996:1003 direkt von
-        <filename>^/branches/frazzle-feature-branch</filename>
+        465 von <filename>/paint/trunk</filename> ist nicht
+        narrensicher, da jemand 462:464 direkt von
+        <filename>/paint/branches/paint-python-wrapper</filename>
          zusammenführen könnte. Glücklicherweise wird das durch die
          transitive Natur der Merges mit <option>--record-only</option>
-        in Subversion 1.7 verhindert: die Zusammenführung mit
+        verhindert: die Zusammenführung mit
          <option>--record-only</option> wendet den
-        <literal>svn:mergeinfo</literal>-Diff von Revision 1055 an,
-        und blockiert somit sowohl direkte Merges vom frazzle-Zweig
-        <emphasis>als auch</emphasis>, wie es vor Subversion 1.7 schon
-        immer war, Merges der Revision 1055 direkt von
-        <filename>^/trunk</filename>:</para>
+        <literal>svn:mergeinfo</literal>-Diff von Revision 465 an, und
+        blockiert somit sowohl direkte Merges dieser Änderung von
+        <filename>/paint/trunk</filename> <emphasis>als
+        auch</emphasis> indirekte von
+        <filename>/paint/branches/paint-python-wrapper</filename>:
+        </para>

        <informalexample>
          <screen>
-$ cd branches/proj-X
+$ cd paint/branches/paint-1.0.x

-$ svn merge ^/trunk . -c 1055 --record-only <!--
-- - - Merging r1055 into '.':
+$ svn merge ^/paint/trunk --record-only -c465<!--
+- - Merging r465 into '.':
  -->
--- Zusammenführen von r1055 in ».«:
- G   .  <!--
-- - - Recording mergeinfo for merge of r1055 into '.':
+-- Zusammenführen von r465 in ».«:
+ U   .  <!--
+- - Recording mergeinfo for merge of r465 into '.':
  -->
--- Aufzeichnung der Informationen für Zusammenführung von r1055 in ».«:
+-- Aufzeichnung der Informationen für Zusammenführung von r465 in ».«:
   G   .

-$ svn diff --depth empty .
+$ svn diff --depth empty
  Index: .
-=================================================================== <!--
-- - - .   (revision 1070)
+===================================================================<!--
+- - .   (revision 462)
  +++ .   (working copy)

  Property changes on: .
  ___________________________________________________________________
-Modified: svn:mergeinfo
-   Merged /trunk:r1055
-   Merged /branches/frazzle-feature-branch:r997-1003
+Added: svn:mergeinfo
+   Merged /paint/branches/paint-python-wrapper:r463-464
+   Merged /paint/trunk:r465
  -->
---- .   (Revision 1070)
+--- .   (Revision 462)
  +++ .   (Arbeitskopie)

  Eigenschaftsänderungen: .
  ___________________________________________________________________
-Geändert: svn:mergeinfo
-   Zusammengeführt /trunk:r1055
-   Zusammengeführt /branches/frazzle-feature-branch:r997-1003
+Hinzugefügt: svn:mergeinfo
+   Zusammengeführt /paint/branches/paint-python-wrapper:r463-464
+   Zusammengeführt /paint/trunk:r465
+<!--
+$ svn ci -m "Block the Python wrappers from the first release of paint."
+Sending        .
+
+Committed revision 466.
+-->
+$ svn ci -m "Die Python-Wrapper aus der ersten Release von Paint sperren."
+Sende          .
+
+Revision 466 übertragen.
  </screen>
        </informalexample>

+<!--
+      <para>Now any subsequent attempts to merge the feature to <filename>
+        /paint/trunk</filename> are inoperative:</para>
+-->
+      <para>Nun sind alle künftigen Versuche, die Funktionalität mit
+        <filename>/paint/trunk</filename> zusammenzuführen,
+        inoperativ:</para>
+
+      <informalexample>
+        <screen>
+$ svn merge ^/paint/trunk -c465<!--
+- - Recording mergeinfo for merge of r465 into '.':-->
+-- Aufzeichnung der Informationen für Zusammenführung von r456 in ».«:
+ U   .
+<!--
+$ svn st # No change!
+-->
+$ svn st # keine Änderung
+
+$ svn merge ^/paint/branches/paint-python-wrapper -r462:464<!--
+- - Recording mergeinfo for merge of r463 through r464 into '.':-->
+-- Aufzeichnung der Informationen für Zusammenführung von r463 bis r464 in  
».«:
+ U   .
+<!--
+$ svn st  # No change!
+-->
+$ svn st # keine Änderung
+$
+</screen>
+      </informalexample>
+
+<!--
+      <para>If at a later time you realize that you actually <emphasis>do
+        </emphasis> need the blocked feature merged to  
<filename>/paint/trunk
+        </filename> you have a couple of choices.  You can reverse merge  
r466,
+        (the revision you blocked the feature), as we discussed in
+        <xref linkend="svn.branchmerge.basicmerging.undo"/>.  Once you  
commit
+        that change you can repeat the merge of r465 from <filename>
+        /paint/trunk</filename>.  Alternatively, you can simply repeat the
+        merge of r465 from <filename>/paint/trunk</filename> using the
+        <option>- -ignore-ancestry</option> option, which will cause the  
merge
+        to disregard any mergeinfo and simply apply the requested diff, see
+        <xref linkend="svn.branchmerge.advanced.ancestry"/>.</para>
+-->
+      <para>Falls Sie später feststellen, dass Sie die blockierte
+        Funktionalität <emphasis>doch</emphasis> nach
+        <filename>/paint/trunk </filename> herüberbringen müssen,
+        haben Sie die Wahl. Sie können r466 (die Revision, in der die
+        Funktionalität blockiert wurde) rückwärts patchen wie in
+        <xref linkend="svn.branchmerge.basicmerging.undo"/> erörtert.
+        Sobald Sie die Änderung übertragen haben, können Sie r465 die
+        von <filename>/paint/trunk</filename> zusammenführen.
+        Alternativ können Sie einfach r465 von
+        <filename>/paint/trunk</filename> erneut zusammenführen, indem
+        Sie die Option <option>--ignore-ancestry</option> verwenden,
+        die beim Zusammenführen jegliche Mergeinfo ignoriert und den
+        erwünschten Diff einfach anwendet; siehe
+        <xref linkend="svn.branchmerge.advanced.ancestry"/>.</para>
+
+      <informalexample>
+        <screen>
+$ svn merge ^/paint/trunk -c465 --ignore-ancestry<!--
+- - Merging r465 into '.':-->
+-- Zusammenführen von r465 in ».«:
+A    python
+A    python/paint.py
+ G   .
+</screen>
+      </informalexample>
+
  <!--
        <para>Blocking changes with <option>- -record-only</option>
          works, but it's also a little bit
@@ -5285,192 +5376,6 @@

      </sect2>

-    <!-- ===============================================================  
-->
-    <sect2 id="svn.branchmerge.advanced.reintegratetwice">
-<!--
-      <title>Keeping a Reintegrated Branch Alive</title>
--->
-      <title>Einen reintegrierten Zweig am Leben erhalten</title>
-
-<!--
-      <para>There is an alternative to destroying and re-creating a
-        branch after reintegration. To understand why it works you need
-        to understand why the branch is initially unfit for further use
-        after it has been reintegrated.</para>
--->
-      <para>Es gibt einen anderen Weg, als einen Zweig nach der
-        Reintegration zu zerstören und erneut zu erzeugen. Zum
-        Verständnis, warum das funktioniert, müssen Sie verstehen,
-        warum der Zweig unmittelbar nach dem Reintegrieren zunächst
-        nicht weiterverwendbar ist.</para>
-
-<!--
-      <para>Let's assume you created your branch in revision
-        <emphasis>A</emphasis>. While working on your branch, you created
-        one or more revisions which made changes to the branch.
-        Before reintegrating your branch back to trunk, you made a final
-        merge from trunk to your branch, and committed the result of
-        this merge as revision <emphasis>B</emphasis>.</para>
--->
-      <para>Nehmen wir an, Sie haben den Zweig in Revision
-        <emphasis>A</emphasis> angelegt. Bei der Arbeit auf diesem
-        Zweig haben Sie eine oder mehrere Revisionen erzeugt, die
-        Änderungen an dem Zweig beinhalten. Vor der Reintegration des
-        Zweigs zurück auf die Hauptentwicklungslinie haben Sie eine
-        abschließende Zusammenführung von dort auf Ihren Zweig
-        vollzogen und das Ergebnis dieser Merges als Revision
-        <emphasis>B</emphasis> übertragen.</para>
-
-<!--
-      <para>When reintegrating your branch into the trunk, you create
-        a new revision <emphasis>X</emphasis> which changes the trunk.
-        The changes made to trunk in this revision <emphasis>X</emphasis>
-        are semantically equivalent to the changes you made to your branch
-        between revisions <emphasis>A</emphasis> and  
<emphasis>B</emphasis>.
-        </para>
--->
-      <para>Bei der Reintegration Ihres Zweigs auf die
-        Hauptentwicklungslinie erzeugen Sie eine neue Revision
-        <emphasis>X</emphasis> die jene ändert. Die Änderungen an der
-        Hauptentwicklungslinie in dieser Revision
-        <emphasis>X</emphasis> sind semantisch äquivalent zu den
-        Änderungen, die Sie zwischen Revision <emphasis>A</emphasis>
-        und <emphasis>B</emphasis> auf Ihrem Zweig vorgenommen haben.
-        </para>
-
-<!--
-      <para>If you now try to merge outstanding changes from trunk to your
-        branch, Subversion will consider changes made in revision
-        <emphasis>X</emphasis> as eligible for merging into the
-        branch. However, since your branch already contains all the
-        changes made in revision <emphasis>X</emphasis>, merging these
-        changes can result in spurious conflicts! These conflicts are
-        often tree conflicts, especially if renames were made on the
-        branch or the trunk while the branch was in development.</para>
--->
-      <para>Falls Sie jetzt versuchen, ausstehende Änderungen von der
-        Hauptentwicklungslinie mit Ihrem Zweig zusammenzuführen, wird
-        Subversion die in Revision <emphasis>X</emphasis>
-        vorgenommenen Änderungen als Kandidaten für die
-        Merges betrachten. Da Ihr Zweig jedoch bereits alle in
-        Revision <emphasis>X</emphasis> vorgenommenen Änderungen
-        enthält, kann das Zusammenführen dieser Änderungen
-        fälschlicherweise zu Konflikten führen! Bei diesen Konflikten
-        handelt es sich oft um Baumkonflikte, besonders dann, wenn
-        während der Entwicklung auf dem Zweig dort oder auf der
-        Hauptentwicklungslinie Umbenennungen gemacht wurden.</para>
-
-<!--
-      <para>So what can be done about this? We need to make sure that
-        Subversion does not try to merge revision <emphasis>X</emphasis>
-        into the branch. This is done using the
-        <option>- -record-only</option> merge option, which was introduced
-        in <xref linkend="svn.branchmerge.advanced.blockchanges"/>.</para>
--->
-      <para>Wie soll also damit umgegangen werden? Wir müssen
-        sicherstellen, dass Subversion nicht versucht, die Revision
-        <emphasis>X</emphasis> mit dem Zweig zusammenzuführen. Das
-        wird mit der Merge-Option <option>--record-only</option>
-        erreicht, die in
-        <xref linkend="svn.branchmerge.advanced.blockchanges"/>
-        vorgestellt wurde.</para>
-
-<!--
-      <para>To carry out the record-only merge, get a working copy of
-        the branch which was just reintegrated in revision
-        <emphasis>X</emphasis>, and merge just revision  
<emphasis>X</emphasis>
-        from trunk into your branch, making sure to use the
-        <option>- -record-only</option> option.</para>
--->
-      <para>Um die nur vermerkte Zusammenführung auszuführen,
-        erstellen Sie sich eine Arbeitskopie des Zweigs, der in
-        Revision <emphasis>X</emphasis> frisch reintegriert wurde, und
-        führen Sie lediglich die Revision <emphasis>X</emphasis> von
-        der Hauptentwicklungslinie mit Ihrem Zweig zusammen, indem Sie
-        sicherstellen, dass Sie die Option
-        <option>--record-only</option> verwenden.</para>
-
-<!--
-      <para>This merge uses the cherry-picking merge syntax, which was
-        introduced in <xref linkend="svn.branchmerge.cherrypicking"/>.
-        Continuing with the running example from
-        <xref linkend="svn.branchmerge.basicmerging.reintegrate"/>,
-        where revision <emphasis>X</emphasis> was revision 391:</para>
--->
-      <para>Dieser Merge verwendet die Syntax zum Herauspicken der
-        Rosinen, wie sie in
-        <xref linkend="svn.branchmerge.cherrypicking"/> vorgestellt
-        wurde. Um mit dem aktuellen Beispiel aus
-        <xref linkend="svn.branchmerge.basicmerging.reintegrate"/>
-        fortzufahren, in dem Revision <emphasis>X</emphasis> die
-        Revision 391 war:</para>
-
-<!--
-      <informalexample>
-        <screen>
-$ cd my-calc-branch
-$ svn update
-Updated to revision 393.
-$ svn merge - -record-only -c 391 ^/calc/trunk
-$ svn commit -m "Block revision 391 from being merged into my-calc-branch."
-Sending        .
-
-Committed revision 394.
-</screen>
-      </informalexample>
--->
-      <informalexample>
-        <screen>
-$ cd my-calc-branch
-$ svn update
-Aktualisiert zu Revision 393.
-$ svn merge --record-only -c 391 ^/calc/trunk
-$ svn commit -m "Block revision 391 from being merged into my-calc-branch."
-Sende          .
-
-Revision 394 übertragen.
-</screen>
-      </informalexample>
-
-      <!-- ### FIXME: In 1.7, record-only merges produce some output -->
-
-<!--
-      <para>Now your branch is ready to soak up changes from the trunk
-        again. After another sync of your branch to the trunk, you can
-        even reintegrate the branch a second time.
-        If necessary, you can do another record-only merge to keep the
-        branch alive. Rinse and repeat.</para>
--->
-      <para>Nun ist Ihr Zweig wieder bereit, Änderungen von der
-        Hauptentwicklungslinie aufzunehmen. Nach einer weiteren
-        Synchronisierung Ihres Zweigs auf die Hauptentwicklungslinie
-        können Sie sogar ein zweites Mal Ihren Zweig reintegrieren.
-        Falls notwendig, können Sie einen weiteren, nur vermerkten
-        Merge machen, um den Zweig am Leben zu erhalten.  Spülen und
-        wiederholen.</para>
-
-<!--
-      <para>It should now also be apparent why deleting the branch and
-        re-creating it has the same effect as doing the above record-only
-        merge. Because revision <emphasis>X</emphasis> is part of the  
natural
-        history (see the sidebar
-        <xref linkend="svn.branchmerge.nomergedata.impicit.mergeinfo"/>)
-        of the newly created branch, Subversion will never attempt to
-        merge revision <emphasis>X</emphasis> into the branch, avoiding
-        spurious conflicts.</para>
--->
-      <para>Nun sollte es auch offensichtlich sein, warum das Löschen
-        und Wiederherstellen des Zweigs den selben Effekt hat wie die
-        obige nur vermerkte Zusammenführung. Da die Revision
-        <emphasis>X</emphasis> Teil der natürlichen Historie des
-        frisch erzeugten Zweigs ist (siehe Anmerkung
-        <xref linkend="svn.branchmerge.nomergedata.impicit.mergeinfo"/>),
-        wird Subversion niemals versuchen, die Revision
-        <emphasis>X</emphasis> mit dem Zweig zusammenzuführen, und
-        vermeidet dadurch fälschliche Konflikte.</para>
-
-      </sect2>
-
      <!-- ===============================================================  
-->
      <sect2 id="svn.branchmerge.advanced.logblame">
  <!--
@@ -5515,87 +5420,86 @@
  $ cd my-calc-branch
  $ svn log -q
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-r390 | user | 2002-11-22 11:01:57 -0600 (Fri, 22 Nov 2002) | 1 line
+r461 | user | 2013-02-25 05:57:48 -0500 (Mon, 25 Feb 2013)
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-r388 | user | 2002-11-21 05:20:00 -0600 (Thu, 21 Nov 2002) | 2 lines
+r379 | user | 2013-02-18 10:56:35 -0500 (Mon, 18 Feb 2013)
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-r381 | user | 2002-11-20 15:07:06 -0600 (Wed, 20 Nov 2002) | 2 lines
+r378 | user | 2013-02-18 09:48:28 -0500 (Mon, 18 Feb 2013)
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-r359 | user | 2002-11-19 19:19:20 -0600 (Tue, 19 Nov 2002) | 2 lines
+…
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-r357 | user | 2002-11-15 14:29:52 -0600 (Fri, 15 Nov 2002) | 2 lines
+r8 | sally | 2013-01-17 16:55:36 -0500 (Thu, 17 Jan 2013)
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-r343 | user | 2002-11-07 13:50:10 -0600 (Thu, 07 Nov 2002) | 2 lines
+r7 | bill | 2013-01-17 16:49:36 -0500 (Thu, 17 Jan 2013)
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-r341 | user | 2002-11-03 07:17:16 -0600 (Sun, 03 Nov 2002) | 2 lines
+r3 | bill | 2013-01-17 09:07:04 -0500 (Thu, 17 Jan 2013)
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-r303 | sally | 2002-10-29 21:14:35 -0600 (Tue, 29 Oct 2002) | 2 lines
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-r98 | sally | 2002-02-22 15:35:29 -0600 (Fri, 22 Feb 2002) | 2 lines
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  </screen>
        </informalexample>
  -->
        <informalexample>
          <screen>
  $ cd my-calc-branch
+
  $ svn log -q
  ------------------------------------------------------------------------
-r390 | user | 2002-11-22 11:01:57 -0600 (Fr, 22. Nov 2002) | 1 Zeile
+r461 | user | 2013-02-25 05:57:48 -0500 (Mo, 25. Feb 2013)
  ------------------------------------------------------------------------
-r388 | user | 2002-11-21 05:20:00 -0600 (Do, 21. Nov 2002) | 2 Zeilen
+r379 | user | 2013-02-18 10:56:35 -0500 (Mo, 18. Feb 2013)
  ------------------------------------------------------------------------
-r381 | user | 2002-11-20 15:07:06 -0600 (Mi, 20. Nov 2002) | 2 Zeilen
+r378 | user | 2013-02-18 09:48:28 -0500 (Mo, 18. Feb 2013)
  ------------------------------------------------------------------------
-r359 | user | 2002-11-19 19:19:20 -0600 (Di, 19. Nov 2002) | 2 Zeilen
+…
  ------------------------------------------------------------------------
-r357 | user | 2002-11-15 14:29:52 -0600 (Fr, 15. Nov 2002) | 2 Zeilen
+r8 | sally | 2013-01-17 16:55:36 -0500 (Do, 17. Jan 2013)
  ------------------------------------------------------------------------
-r343 | user | 2002-11-07 13:50:10 -0600 (Do, 07. Nov 2002) | 2 Zeilen
+r7 | bill | 2013-01-17 16:49:36 -0500 (Do, 17. Jan 2013)
  ------------------------------------------------------------------------
-r341 | user | 2002-11-03 07:17:16 -0600 (So, 03. Nov 2002) | 2 Zeilen
+r3 | bill | 2013-01-17 09:07:04 -0500 (Do, 17. Jan 2013)
  ------------------------------------------------------------------------
-r303 | sally | 2002-10-29 21:14:35 -0600 (Di, 29. Okt 2002) | 2 Zeilen
-------------------------------------------------------------------------
-r98 | sally | 2002-02-22 15:35:29 -0600 (Fr, 22. Feb 2002) | 2 Zeilen
-------------------------------------------------------------------------
  </screen>
        </informalexample>

  <!--
        <para>But is this really an accurate picture of all the changes
          that happened on the branch?  What's left out here is
-        the fact that revisions 390, 381, and 357 were actually the
+        the fact that revisions 352, 362, 372 and 379 were actually the
          results of merging changes from the trunk.  If you look at one
          of these logs in detail, the multiple trunk changesets that
          comprised the branch change are nowhere to be seen:</para>
  -->
        <para>Aber ist das wirklich eine genaue Wiedergabe aller
          Änderungen, die auf dem Zweig stattgefunden haben? Was hier
-        ausgelassen wird, ist, dass die Revisionen 390, 381 und 357
-        tatsächlich Ergebnisse des Zusammenführens von Änderungen aus
-        dem Stamm waren. Wenn Sie sich eins dieser Protokolle im
-        Detail anschauen, können Sie die verschiedenen
-        Änderungsmengen vom Stamm, die die Änderungen auf dem Zweig
-        ausmachen, nirgendwo sehen:</para>
+        ausgelassen wird, ist, dass die Revisionen 352, 362, 372 und
+        379 tatsächlich Ergebnisse des Zusammenführens von Änderungen
+        aus dem Stamm waren. Wenn Sie sich eins dieser Protokolle im
+        Detail anschauen, können Sie die verschiedenen Änderungsmengen
+        vom Stamm, die die Änderungen auf dem Zweig ausmachen,
+        nirgendwo sehen:</para>

        <informalexample>
          <screen>
-$ svn log -v -r 390
+$ svn log ^/calc/branches/my-calc-branch -r352 -v
  ------------------------------------------------------------------------  
<!--
-r390 | user | 2002-11-22 11:01:57 -0600 (Fri, 22 Nov 2002) | 1 line
+r352 | user | 2013-02-16 09:35:18 -0500 (Sat, 16 Feb 2013) | 1 line
  Changed paths:
-   M /branches/my-calc-branch/button.c
-   M /branches/my-calc-branch/README
+   M /calc/branches/my-calc-branch
+   M /calc/branches/my-calc-branch/Makefile
+   M /calc/branches/my-calc-branch/doc/INSTALL
+   M /calc/branches/my-calc-branch/src/button.c
+   M /calc/branches/my-calc-branch/src/real.c

-Final merge of trunk changes to my-calc-branch.
+Sync latest trunk changes to my-calc-branch.
  -->
-r390 | user | 2002-11-22 11:01:57 -0600 (Fr, 22. Nov 2002) | 1 Zeile
+r352 | user | 2013-02-16 09:35:18 -0500 (Sa, 16. Feb 2013) | 1 Zeile
  Geänderte Pfade:
-   M /branches/my-calc-branch/button.c
-   M /branches/my-calc-branch/README
+   M /calc/branches/my-calc-branch
+   M /calc/branches/my-calc-branch/Makefile
+   M /calc/branches/my-calc-branch/doc/INSTALL
+   M /calc/branches/my-calc-branch/src/button.c
+   M /calc/branches/my-calc-branch/src/real.c

-Letzte Zusammenführung der Änderungen von trunk changes in my-calc-branch.
+Synchronisierung der letzten Änderungen von trunk mit my-calc-branch.
  </screen>
        </informalexample>

@@ -5617,110 +5521,125 @@

        <informalexample>
          <screen>
-$ svn log -v -r 390 -g
+$ svn log ^/calc/branches/my-calc-branch -r352 -v -g
  ------------------------------------------------------------------------  
<!--
-r390 | user | 2002-11-22 11:01:57 -0600 (Fri, 22 Nov 2002) | 1 line
+r352 | user | 2013-02-16 09:35:18 -0500 (Sat, 16 Feb 2013) | 1 line
  Changed paths:
-   M /branches/my-calc-branch/button.c
-   M /branches/my-calc-branch/README
+   M /calc/branches/my-calc-branch
+   M /calc/branches/my-calc-branch/Makefile
+   M /calc/branches/my-calc-branch/doc/INSTALL
+   M /calc/branches/my-calc-branch/src/button.c
+   M /calc/branches/my-calc-branch/src/real.c

-Final merge of trunk changes to my-calc-branch.
+Sync latest trunk changes to my-calc-branch.
  -->
-r390 | user | 2002-11-22 11:01:57 -0600 (Fr, 22. Nov 2002) | 1 Zeile
+r352 | user | 2013-02-16 09:35:18 -0500 (Sa, 16. Feb 2013) | 1 Zeile
  Geänderte Pfade:
-   M /branches/my-calc-branch/button.c
-   M /branches/my-calc-branch/README
+   M /calc/branches/my-calc-branch
+   M /calc/branches/my-calc-branch/Makefile
+   M /calc/branches/my-calc-branch/doc/INSTALL
+   M /calc/branches/my-calc-branch/src/button.c
+   M /calc/branches/my-calc-branch/src/real.c

-Letzte Zusammenführung der Änderungen von trunk in my-calc-branch.
+Synchronisierung der letzten Änderungen von trunk mit my-calc-branch.
  ------------------------------------------------------------------------  
<!--
-r383 | sally | 2002-11-21 03:19:00 -0600 (Thu, 21 Nov 2002) | 2 lines
+r351 | sally | 2013-02-16 08:04:22 -0500 (Sat, 16 Feb 2013) | 2 lines
  Changed paths:
-   M /branches/my-calc-branch/button.c
-Merged via: r390
+   M /calc/trunk/src/real.c
+Merged via: r352

-Fix inverse graphic error on button.
+Trunk work on calc project.
  -->
-r383 | sally | 2002-11-21 03:19:00 -0600 (Do, 21. Nov 2002) | 2 Zeilen
+r351 | sally | 2013-02-16 08:04:22 -0500 (Sa, 16. Feb 2013) | 2 Zeilen
  Geänderte Pfade:
-   M /branches/my-calc-branch/button.c
-Zusammengeführt mittels: r390
+   M /calc/trunk/src/real.c
+Zusammengeführt mittels: r352

-Inverse Grafik auf Knopf behoben.
+Arbeiten auf dem Stamm vom calc-Projekt.
+------------------------------------------------------------------------
+…
  ------------------------------------------------------------------------  
<!--
-r382 | sally | 2002-11-20 16:57:06 -0600 (Wed, 20 Nov 2002) | 2 lines
+r345 | sally | 2013-02-15 16:51:17 -0500 (Fri, 15 Feb 2013) | 2 lines
  Changed paths:
-   M /branches/my-calc-branch/README
-Merged via: r390
+   M /calc/trunk/Makefile
+   M /calc/trunk/src/integer.c
+Merged via: r352

-Document my last fix in README.
--->
-r382 | sally | 2002-11-20 16:57:06 -0600 (Mi, 20. Nov 2002) | 2 Zeilen
+Trunk work on calc project.
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+r344 | sally | 2013-02-15 16:44:44 -0500 (Fri, 15 Feb 2013) | 1 line
+Changed paths: -->
+------------------------------------------------------------------------
+r344 | sally | 2013-02-15 16:44:44 -0500 (Fr, 15. Feb 2013) | 1 Zeile
  Geänderte Pfade:
-   M /branches/my-calc-branch/README
-Zusammengeführt mittels: r390
-
-Meine letzte Änderung in README dokumentiert.
+   M /calc/trunk/src/integer.c<!--
+Merged via: r352-->
+Zusammengeführt mittels: r352
+<!--
+Refactor the bazzle functions.
+-->
+Die bazzle-Funktionen refaktoriert.
  </screen>
        </informalexample>

  <!--
        <para>By making the log operation use merge history, we see not
-        just the revision we queried (r390), but also the two revisions
-        that came along on the ride with it—a couple of changes
-        made by Sally to the trunk.  This is a much more complete
-        picture of history!</para>
+        just the revision we queried (r352), but also the other revisions
+        that came along on the ride with it—Sally's work on trunk.
+        This is a much more complete picture of history!</para>
  -->
        <para>Dadurch, dass wir die Protokoll-Operation aufgefordert
          haben, die Geschichte der Zusammenführungen zu verwenden,
          sehen wir nicht nur die Revision, die wir abgefragt haben
-        (r390), sondern auch die zwei Revisionen, die hier mitkamen
-        – ein paar Änderungen, die Sally auf dem Stamm gemacht
-        hat. Das ist ein wesentlich vollständigeres Bild der
-        Geschichte!</para>
+        (r352), sondern auch die anderen Revisionen, die hier mitkamen
+        – die Arbeit von Sally auf dem Stamm.  Das ist ein
+        wesentlich vollständigeres Bild der Geschichte!</para>

  <!--
        <para>The <command>svn blame</command> command also takes the
          <option>- -use-merge-history</option> (<option>-g</option>)
          option.  If this option is neglected, somebody looking at
-        a line-by-line annotation of <filename>button.c</filename> may
-        get the mistaken impression that you were responsible for the
-        lines that fixed a certain error:</para>
+        a line-by-line annotation of <filename>Makefile</filename> may
+        get the mistaken impression that you were responsible for a
+        particular change:</para>
  -->
        <para>Auch der <command>svn blame</command>-Befehl versteht die
          Option <option>--use-merge-history</option>
          (<option>-g</option>).  Falls diese Option vergessen wird,
          könnte jemand, der sich die zeilenweisen Anmerkungen von
-        <filename>button.c</filename> ansieht, fälschlicherweise davon
-        ausgehen, dass Sie für die Zeilen verantwortlich sind, die
-        einen bestimmten Fehler beseitigt haben:</para>
+        <filename>Makefile</filename> ansieht, fälschlicherweise davon
+        ausgehen, dass Sie für die Zeilen einer bestimmten Änderung
+        verantwortlich sind:</para>

        <informalexample>
          <screen>
-$ svn blame button.c
+$ svn blame src/button.c
  …
-   390    user    retval = inverse_func(button, path);
-   390    user    return retval;
-   390    user    }
+   352    user    retval = inverse_func(button, path);
+   352    user    return retval;
+   352    user    }
  …
  </screen>
        </informalexample>

  <!--
        <para>And while it's true that you did actually commit those
-        three lines in revision 390, two of them were actually written
-        by Sally back in revision 383:</para>
+        three lines in revision 352, two of them were actually written
+        by Sally back in revision 348 and were brought into your branch
+        via a sync merge:</para>
  -->
        <para>Obwohl es zutrifft, dass Sie diese drei Zeilen in Revision
-        390 übergeben haben, sind zwei davon tatsächlich von Sally in
-        Revision 383 geschrieben worden:</para>
+        352 übergeben haben, sind zwei davon tatsächlich von Sally in
+        Revision 348 geschrieben worden und sind durch einen
+        Synchronisierungs-Merge in Ihren Zweig geraten:</para>

        <informalexample>
          <screen>
  $ svn blame button.c -g
  …
-G    383    sally   retval = inverse_func(button, path);
-G    383    sally   return retval;
-     390    user    }
+G    348    sally   retval = inverse_func(button, path);
+G    348    sally   return retval;
+     352    user    }
  …
  </screen>
        </informalexample>


More information about the svnbook-dev mailing list