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

svnbook at googlecode.com svnbook at googlecode.com
Tue Feb 10 00:49:15 CST 2015


Revision: 4978
Author:   jmfelderhoff at gmx.eu
Date:     Tue Feb 10 06:47:15 2015 UTC
Log:      [de] Translation: Branching and Merging
     ** Noticing or Ignoring Ancestry
     ** Merges and Moves

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

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

=======================================
--- /branches/1.8/de/book/ch04-branching-and-merging.xml	Tue Feb 10  
05:31:01 2015 UTC
+++ /branches/1.8/de/book/ch04-branching-and-merging.xml	Tue Feb 10  
06:47:15 2015 UTC
@@ -5664,9 +5664,8 @@
        <para>
          <indexterm>
            <primary>ancestry</primary>
-        </indexterm>
-        When conversing with a Subversion developer, you might
-        very likely hear reference to the term
+        </indexterm>When conversing with a Subversion developer, you
+        might very likely hear reference to the term
          <firstterm>ancestry</firstterm>.  This word is used to
          describe the relationship between two objects in a
          repository: if they're related to each other, one
@@ -5675,9 +5674,8 @@
        <para>
          <indexterm>
            <primary>Abstammung</primary>
-        </indexterm>
-        Wenn Sie sich mit einem Subversion-Entwickler unterhalten,
-        wird wahrscheinlich auch der Begriff
+        </indexterm>Wenn Sie sich mit einem Subversion-Entwickler
+        unterhalten, wird wahrscheinlich auch der Begriff
          <firstterm>Abstammung</firstterm> erwähnt. Dieses Wort wird
          verwendet, um die Beziehung zwischen zwei Objekten im
          Projektarchiv zu beschreiben: Wenn sie in Beziehung zueinander
@@ -5792,7 +5790,12 @@

  <!--
        <tip>
-        <para>The <option>- -ignore-ancestry</option> option also disables
+        <para>
+        <indexterm>
+          <primary>merge tracking</primary>
+          <secondary>disabling</secondary>
+        </indexterm>
+        The <option>- -ignore-ancestry</option> option also disables
          <xref linkend="svn.branchmerge.basicmerging.mergetracking"/>.
          This means that <literal>svn:mergeinfo</literal> is not considered
          when <command>svn merge</command> is determining what revisions
@@ -5801,7 +5804,12 @@
        </tip>
  -->
        <tip>
-        <para>Die Option <option>--ignore-ancestry</option>
+        <para>
+        <indexterm>
+          <primary>Merge-Tracking</primary>
+          <secondary>unterbinden</secondary>
+        </indexterm>
+          Die Option <option>--ignore-ancestry</option>
            unterbindet auch
            <xref linkend="svn.branchmerge.basicmerging.mergetracking"/>.
            Das bedeutet, dass weder <literal>svn:mergeinfo</literal>
@@ -5841,14 +5849,14 @@
  <!--
        <para>Alas, this scenario doesn't work so well right now and
          is considered one of Subversion's current weak spots.  The
-        problem is that Subversion's <command>svn update</command>
+        problem is that Subversion's <command>svn merge</command>
          command isn't as robust as it should be, particularly when
          dealing with copy and move operations.</para>
  -->
        <para>Leider funktioniert dieses Szenario im Augenblick noch
          nicht so richtig und gilt als einer der Schwachpunkte von
          Subversion. Das Problem ist, das der Subversion-Befehl
-        <command>svn update</command> nicht so stabil ist, wie er sein
+        <command>svn merge</command> nicht so stabil ist, wie er sein
          sollte, besonders wenn es um Kopier- und Verschiebeoperationen
          geht.</para>

@@ -5860,8 +5868,9 @@
          merge</command>.  Instead of telling the client, <quote>Copy
          that file you already have to this new location,</quote> it
          sends down an entirely new file.  This can lead to
-        problems, especially because the same thing happens with
-        renamed files.  A lesser-known fact about Subversion is that
+        problems, particularly tree conflicts in the case of renames,
+        which involve not only the new copy, but a deletion of the old
+        path—a lesser-known fact about Subversion is that
          it lacks <quote>true renames</quote>—the <command>svn
          move</command> command is nothing more than an aggregation
          of <command>svn copy</command> and <command>svn
@@ -5874,92 +5883,202 @@
          merge</command> ausführt. Statt dem Client mitzuteilen:
          <quote>Kopiere die Datei, die du bereits hast an diesen neuen
          Ort</quote>, sendet es eine völlig neue Datei. Das kann zu
-        Problemen führen, besonders, weil dasselbe mit umbenannten
-        Dateien passiert. Eine weniger bekannte Tatsache über
-        Subversion ist, dass es keine <quote>echten
-        Umbenennungen</quote> hat – der Befehl <command>svn
-        move</command> ist weiter nichts als eine Verbindung von
-        <command>svn copy</command> und <command>svn
+        Problemen führen, im Falle von Umbenennungen besonders zu
+        Baumkonflikten, die nicht nur die neue Kopie betreffen,
+        sondern die Löschung des alten Pfades ^ndash; eine weniger
+        bekannte Tatsache über Subversion ist, dass es keine
+        <quote>echten Umbenennungen</quote> hat – der Befehl
+        <command>svn move</command> ist weiter nichts als eine
+        Verbindung von <command>svn copy</command> und <command>svn
          delete</command>.</para>

  <!--
-      <para>For example, suppose that while working on your private
-        branch, you rename <filename>integer.c</filename>
-        to <filename>whole.c</filename>.  Effectively you've created
-        a new file in your branch that is a copy of the original
-        file, and deleted the original file.  Meanwhile, back
-        on <filename>trunk</filename>, Sally has committed some
-        improvements to <filename>integer.c</filename>.  Now you
-        decide to merge your branch to the trunk:</para>
+      <para>For example, suppose that you want to make some changes on
+        your private branch <filename>/calc/branch/my-calc-branch
+        </filename>.  First you perform an automatic sync merge with
+        <filename>/calc/trunk</filename> and commit that in r470:</para>
  -->
-      <para>Nehmen wir beispielsweise an, dass Sie während Ihrer
-        Arbeit auf Ihrem privaten Zweig <filename>integer.c</filename>
-        in <filename>whole.c</filename> umbenennen. Tatsächlich haben
-        Sie eine neue Datei auf Ihrem Zweig erzeugt, die eine Kopie
-        der ursprünglichen Datei ist, und letztere gelöscht.
-        Zwischenzeitlich hat Sally einige Verbesserungen an
-        <filename>integer.c</filename> in <filename>trunk</filename>
-        übergeben. Nun entscheiden Sie sich, Ihren Zweig mit dem Stamm
-        zusammenzuführen:</para>
-
+      <para>Nehmen wir beispielsweise an, dass Sie einige Änderungen
+        an Ihrem privaten Zweig <filename>/calc/branch/my-calc-branch
+        </filename> machen möchten. Zunächst führen Sie einen
+        automatischen Synchronisierungs-Merge mit
+        <filename>/calc/trunk</filename> durch und übertragen das
+        Ergebnis in r470:</para>
        <informalexample>
          <screen>
  $ cd calc/trunk

-$ svn merge --reintegrate ^/calc/branches/my-calc-branch <!--
+$ svn merge ^/calc/trunk <!--
  - - - Merging differences between repository URLs into '.':
  -->
  -- Zusammenführen der Unterschiede zwischen Projektarchiv-URLs in ».«:
-D    integer.c
-A    whole.c
-U    .  <!--
+U    doc/INSTALL
+A    FAQ
+U    src/main.c
+U    src/button.c
+U    src/integer.c
+U    Makefile
+U    README
+ U   .  <!--
  - - - Recording mergeinfo for merge between repository URLs into '.':
  -->
  -- Aufzeichnung der Informationen für Zusammenführung zwischen  
Projektarchiv-URLs in ».«:
   U   .
+<!--
+$ svn ci -m "Sync all changes from ^/calc/trunk through r469."
+Sending        .
+Sending        Makefile
+Sending        README
+Sending        FAQ
+Sending        doc/INSTALL
+Sending        src/main.c
+Sending        src/button.c
+Sending        src/integer.c
+Transmitting file data ....
+Committed revision 470.
+-->
+$ svn ci -m "Synchronisierung aller Änderungen von ^/calc/trunk bis r469."
+Sende          .
+Sende          Makefile
+Sende          README
+Sende          FAQ
+Sende          doc/INSTALL
+Sende          src/main.c
+Sende          src/button.c
+Sende          src/integer.c
+Übertrage Daten ....
+Revision 470 übertragen.
  </screen>
        </informalexample>
+<!--
+      <para>Then you rename <filename>integer.c</filename> to <filename>
+        whole.c</filename> in r471 and then make some edits to the same
+        file in r473.  Effectively you've created a new file in your branch
+        (that is a copy of the original file plus some edits) and deleted
+        the original file.  Meanwhile, back on <filename>/calc/trunk
+        </filename>, Sally has committed some improvements of her own to
+        <filename>integer.c</filename> in r472:</para>
+-->
+      <para>Dann benennen Sie in r471 <filename>integer.c</filename>
+        in <filename>whole.c</filename> um und editieren dieselbe
+        Datei in r473. Tatsächlich haben Sie eine neue Datei auf Ihrem
+        Zweig erzeugt (die eine Kopie der ursprünglichen Datei plus
+        einiger Bearbeitungen ist) und die ursprüngliche Datei
+        gelöscht.  Zwischenzeitlich hat Sally in r472 auf
+        <filename>/calc/trunk</filename> selber einige Verbesserungen
+        an <filename>integer.c</filename> übergeben:</para>
+
+      <informalexample>
+        <screen>
+$ svn log -v -r472 ^/calc/trunk
+------------------------------------------------------------------------<!--
+r472 | sally | 2013-02-26 07:05:18 -0500 (Tue, 26 Feb 2013) | 1 line
+Changed paths:
+   M /calc/trunk/src/integer.c
+
+Trunk work on integer.c.-->
+r472 | sally | 2013-02-26 07:05:18 -0500 (Di, 26. Feb 2013) | 1 Zeile
+Geänderte Pfade:
+   M /calc/trunk/src/integer.c
+
+Arbeit auf dem Stamm von integer.c.
+------------------------------------------------------------------------
+</screen>
+      </informalexample>

  <!--
-      <para>This doesn't look so bad at first glance, but it's also
-        probably not what you or Sally expected.  The merge operation
-        has deleted the latest version of
-        the <filename>integer.c</filename> file (the one containing
-        Sally's latest changes), and blindly added your
-        new <filename>whole.c</filename> file—which is a
-        duplicate of the <emphasis>older</emphasis> version
-        of <filename>integer.c</filename>.  The net effect is that
-        merging your <quote>rename</quote> to the trunk has removed
-        Sally's recent changes from the latest revision!</para>
+      <para>Now you decide to merge your branch back to the trunk.
+        How will Subversion combine the rename and edits you made
+        with Sally's edits?</para>
  -->
-      <para>Auf den ersten Blick sieht es gar nicht schlecht aus,
-        jedoch ist es nicht das, was Sie und Sally erwartet hätten.
-        Die Zusammenführung hat die letzte Version der Datei
-        <filename>integer.c</filename> gelöscht (diejenige, die Sallys
-        Änderungen beinhaltet) und blindlings Ihre neue Datei
-        <filename>whole.c</filename> hinzugefügt – die ein
-        Duplikat der <emphasis>älteren</emphasis> Version von
-        <filename>integer.c</filename> ist. Das Endergebnis ist, dass
-        durch die Zusammenführung Ihrer <quote>Umbenennung</quote> auf
-        dem Zweig mit dem Stamm Sallys jüngste Änderungen aus der
-        letzten Revision entfernt wurden.</para>
+      <para>Nun entscheiden Sie sich, Ihren Zweig auf den Stamm
+        zurückzuführen. Wie wird Subversion Ihre Umbenennung und
+        Bearbeitung mit den Bearbeiungen durch Sally
+        kombinieren?</para>
+
+      <informalexample>
+        <screen>
+$ svn merge ^/calc/branches/my-calc-branch<!--
+- - Merging differences between repository URLs into '.':-->
+-- Zusammenführen der Unterschiede zwischen Projektarchiv-URLs in ».«:
+   C src/integer.c
+ U   src/real.c
+A    src/whole.c<!--
+- - Recording mergeinfo for merge between repository URLs into '.':-->
+-- Aufzeichnung der Informationen für Zusammenführung zwischen  
Projektarchiv-URLs in ».«:
+ U   .<!--
+Summary of conflicts:
+  Tree conflicts: 1-->
+Konfliktübersicht:
+  Baumkonflikte: 1
+
+$ svn st
+ M      .
+      C src/integer.c<!--
+      >   local file edit, incoming file delete upon merge-->
+      >   lokale Datei geändert, eingehendes Löschen einer Datei bei  
Zusammenführung
+ M      src/real.c
+A  +    src/whole.c<!--
+Summary of conflicts:
+  Tree conflicts: 1-->
+Konfliktübersicht:
+  Baumkonflikte: 1
+</screen>
+      </informalexample>

  <!--
-      <para>This isn't true data loss.  Sally's changes are still in
-        the repository's history, but it may not be immediately
-        obvious that this has happened.  The moral of this story is
-        that until Subversion improves, be very careful about
-        merging copies and renames from one branch to
-        another.</para>
+      <para>The answer is that Subversion <emphasis>won't</emphasis>
+        combine those changes, but rather raises a tree conflict<footnote>
+        <para>If Sally hadn't made her change in r472, then Subversion  
would
+        notice that <filename>integer.c</filename> in the
+        target working copy is identical to <filename>integer.c</filename>
+        in the left-side of the merge and would allow your rename to
+        succeed without a tree conflict:</para>-->
+      <para>Die Antwort ist, dass Subversion diese Änderungen
+        <emphasis>keineswegs</emphasis> kombiniert, sondern
+        stattdessen einen Baumkonflikt erzeugt<footnote><para>Falls
+        Sally ihre Änderung in  r472 nicht gemacht hätte, dann wäre
+        Subversion aufgefallen, dass <filename>integer.c</filename> in
+        der Ziel-Arbeitskopie identisch zu <filename>integer.c</filename>
+        auf der linken Seite des Merge ist, und hätte Ihnen die
+        Umbenennung ohne Baumkonflikt durchgehen lassen:</para>
+        <informalexample>
+          <screen>
+$ svn merge ^/calc/branches/my-calc-branch<!--
+- - Merging differences between repository URLs into '.':-->
+-- Zusammenführen der Unterschiede zwischen Projektarchiv-URLs in ».«:
+ U   src/real.c
+A    src/whole.c
+D    src/integer.c<!--
+- - Recording mergeinfo for merge between repository URLs into '.':-->
+-- Aufzeichnung der Informationen für Zusammenführung zwischen  
Projektarchiv-URLs in ».«:
+ U   .
+</screen><!--
+      </informalexample></footnote>because it needs your help
+        to figure out what part of your changes and what part of Sally's
+        changes should ultimately end up in <filename>whole.c</filename>
+        or even if the rename should take place at all!</para>-->
+        </informalexample></footnote>, da es Ihre Hilfe benötigt, um
+        herauszufinden, welche Teile Ihrer Änderungen und welche Teile
+        von Sallys Änderungen schließlich in
+        <filename>whole.c</filename> landen sollen, oder ob die
+        Umbenennung überhaupt stattfinden soll!</para>
+
+<!--
+      <para>You will need to resolve this tree conflict before committing
+        the merge and this may require some manual intervention on your
+        part, see <xref linkend="svn.tour.treeconflicts"/>.  The moral of
+        this story is that until Subversion improves, be careful about
+        merging copies and renames from one branch to another and when you
+        do, be prepared for some manual resolution.</para>
  -->
-      <para>Es ist kein echter Datenverlust. Sallys Änderungen
-        befinden sich noch immer in der Geschichte des Projektarchivs,
-        allerdings mag es nicht sofort ersichtlich sein, dass es
-        passiert ist. Die Lehre, die es aus dieser Geschichte zu
-        ziehen gilt, lautet, dass Sie sehr vorsichtig mit dem
-        Zusammenführen von Kopien und Umbenennungen zwischen Zweigen
-        sein sollten, solange sich Subversion an dieser Stelle nicht
-        verbessert hat.</para>
+      <para>Vor der Übergabe werden Sie den Baumkonflikt auflösen
+        müssen, was einiger manueller Eingriffe Ihrerseits bedarf,
+        siehe <xref linkend="svn.tour.treeconflicts"/>. Die Moral der
+        Geschichte ist, dass Sie dabei vorsichtig sein sollten, wenn Sie
+        Kopien und Umbenennungen zwischen Zweigen zusammenführen, und
+        auf manuelle Eingriffe vorbereitet sind,
+        bis sich Subversion verbessert.</para>

      </sect2>



More information about the svnbook-dev mailing list