[svnbook commit] r3366 - trunk/src/de/book

jmfelderhoff noreply at red-bean.com
Sun Dec 7 12:26:12 CST 2008


Author: jmfelderhoff
Date: Sun Dec  7 12:26:11 2008
New Revision: 3366

Log:
* trunk/src/de/book/ch04-branching-and-merging.xml
  - Tickets ##163--165 (cf. http://www.svnbook.de/report/6).


Modified:
   trunk/src/de/book/ch04-branching-and-merging.xml

Modified: trunk/src/de/book/ch04-branching-and-merging.xml
==============================================================================
--- trunk/src/de/book/ch04-branching-and-merging.xml	(original)
+++ trunk/src/de/book/ch04-branching-and-merging.xml	Sun Dec  7 12:26:11 2008
@@ -3515,8 +3515,12 @@
 
     <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
     <sect2 id="svn.branchmerge.advanced.moves">
+<!--
       <title>Merges and Moves</title>
+-->
+      <title>Zusammenführen und Verschieben</title>
 
+<!--
       <para>A common desire is to refactor source code, especially
         in Java-based software projects.  Files and directories are
         shuffled around and renamed, often causing great disruption
@@ -3524,13 +3528,31 @@
         case to use a branch, doesn't it?  Just create a branch,
         shuffle things around, and then merge the branch back to the
         trunk, right?</para>
+-->
+      <para>Es ist ein verbreiteter Wunsch, Software zu refaktorieren,
+	besonders in Java-basierten Software-Projekten. Dateien und
+	Verzeichnisse werden hin und her geschoben und umbenannt, was
+	häufig zu erheblichen Beeinträchtigungen für alle
+	Projektmitarbeiter führt. Das hört sich an, als sei das der
+	klassische Fall, um nach einem Zweig zu greifen, nicht wahr?
+	Sie erzeugen einfach einen Zweig, schieben das Zeug herum und
+	führen anschließend den Zweig mit dem Stamm zusammen.</para>
 
+<!--
       <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>
         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
+	sollte, besonders wenn es um Kopier- und Verschiebeoperationen
+	geht.</para>
 
+<!--
       <para>When you use <command>svn copy</command> to duplicate a
         file, the repository remembers where the new file came from,
         but it fails to transmit that information to the client which
@@ -3544,7 +3566,23 @@
         move</command> command is nothing more than an aggregation
         of <command>svn copy</command> and <command>svn
         delete</command>.</para>
+-->
+      <para>Wenn Sie <command>svn copy</command> zum Duplizieren einer
+	Datei verwenden, merkt sich das Repository, woher die neue
+	Datei kam, versäumt aber, diese Information an den Client zu
+	senden, der <command>svn update</command> oder <command>svn
+	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 witer 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
@@ -3553,6 +3591,16 @@
         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>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>
 
       <screen>
 $ cd calc/trunk
@@ -3564,6 +3612,7 @@
 U   .
       </screen>
 
+<!--
       <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
@@ -3574,20 +3623,47 @@
         of <filename>integer.c</filename>.  The net effect is that
         merging your <quote>rename</quote> to the branch has removed
         Sally's recent changes from the latest revision!</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>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>Es ist kein echter Datenverlust. Sallys Änderungen
+	befinden sich noch immer in der Geschichte des Repositorys,
+	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>
 
     </sect2>
 
     <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
     <sect2 id="svn.branchmerge.advanced.pre1.5clients">
+<!--
       <title>Blocking Merge-Unaware Clients</title>
+-->
+      <title>Abblocken von Clients, die Zusammenführungen nicht
+	ausreichend unterstützen</title>
 
+<!--
       <para>If you've just upgraded your server to Subversion 1.5 or
         later, there's a significant risk that pre-1.5 Subversion
         clients can mess up your automated merge tracking.  Why is
@@ -3600,7 +3676,23 @@
         when <quote>merge-aware</quote> clients attempt automatic
         merging, they're likely to run into all sorts of conflicts
         resulting from repeated merges.</para>
+-->
+      <para>Wenn Sie gerade Ihren Server auf Subversion 1.5 oder
+	größer umgestellt haben, besteht ein signifikantes Risiko,
+	dass Subversion-Clients einer kleineren Version als 1.5 Ihre
+	automatische Zusammenführungs-Verfolgung durcheinander bringen
+	können. Warum? Wenn ein älterer Subversion-Client <command>svn
+        merge</command> ausführt, modifiziert er nicht den Wert des
+	Propertys <literal>svn:mergeinfo</literal>.  Obwohl die
+	anschließende Übergabe das Ergebnis einer Zusammenführung ist,
+	wird dem Repository nichts über die duplizierten Änderungen
+	mitgeteilt – diese Information ist verloren. Wenn später
+	Clients, die Zusammenführungsinformationen auswerten,
+	automatische Zusammenführungen versuchen, werden Sie
+	wahrscheinlich in alle möglichen Konflikte laufen, die durch
+	wiederholte Zusammenführungen hervorgerufen wurden.</para>
 
+<!--
       <para>If you and your team are relying on the merge-tracking
         features of Subversion, you may want to configure your
         repository to prevent older clients from committing changes.
@@ -3615,20 +3707,47 @@
         <xref linkend="svn.reposadmin.create.hooks"/> and
         <xref linkend="svn.ref.reposhooks.start-commit"/> for
         details.</para>
+-->
+      <para>Wenn Sie und Ihr Team auf die Zusammenführungs-Verfolgung
+      von Subversion angewiesen sind, sollten Sie Ihr Repository
+      dergestalt konfigurieren, dass ältere Clients daran gehindert
+      werden, Änderungen zu übergeben. Die einfache Methode hierfür
+      ist es, den <quote>Fähigkeiten</quote>-Parameter im
+      <literal>start-commit</literal> Hook-Skript zu untersuchen.
+      Wenn der Client meldet, dass er mit <literal>mergeinfo</literal>
+      umgehen kann, kann das Skript den Beginn der Übergabe erlauben.
+      Wenn der Client diese Fähigkeit nicht meldet, wird die Übergabe
+      abgelehnt. Wir werden mehr über Hook-Skripte im nächsten Kapitel
+      erfahren; siehe <xref linkend="svn.reposadmin.create.hooks"/>
+      und <xref linkend="svn.ref.reposhooks.start-commit"/> für
+      Details.</para>
 
     </sect2>
 
     <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
     <sect2 id="svn.branchmerge.advanced.finalword">
+<!--
       <title>The Final Word on Merge Tracking</title>
+-->
+      <title>Das abschließende Wort zur Zusammenführungs-Verfolgung</title>
 
+<!--
       <para>The bottom line is that Subversion's merge-tracking
         feature has an extremely complex internal implementation, and
         the <literal>svn:mergeinfo</literal> property is the only
         window the user has into the machinery.  Because the feature
         is relatively new, a numbers of edge cases and
         possible unexpected behaviors may pop up.</para>
+-->
+      <para>Unter dem Strich bedeutet das, dass die Fähigkeit von
+	Subversion zur Zusammenführungs-Verfolgung eine höchst
+	komplexe interne Implementierung besitzt und das Property
+	<literal>svn:mergeinfo</literal> das einzige Fenster zu diesem
+	Räderwerk ist. Da diese Fähigkeit relativ neu ist, kann eine
+	Anzahl von Randfällen und mögliche unerwartete
+	Verhaltensweisen auftauchen.</para>
 
+<!--
       <para>For example, sometimes mergeinfo will be generated when
         running a simple <command>svn copy</command> or <command>svn
         move</command> command.  Sometimes mergeinfo will appear on
@@ -3642,7 +3761,23 @@
         mechanisms of mergeinfo <quote>elision,</quote> and
         even <quote>inheritance</quote> from parent to child
         directories.</para>
+-->
+      <para>So kann zum Beispiel Mergeinfo manchmal durch einen
+	einfachen <command>svn copy</command>- oder <command>svn
+	move</command>-Befehl erzeugt werden. Manchmal wird Mergeinfo
+	an Dateien auftauchen, von denen Sie nicht erwartet hätten,
+	dass sie durch die Operation berührt worden wären. Manchmal
+	wird Mergeinfo überhaupt nicht erzeugt, obwohl Sie es erwartet
+	hätten. Darüberhinaus umgibt die Verwaltung der
+	Mergeinfo-Metadaten eine ganze Menge von Systematiken und
+	Verhalten, wie <quote>explizite</quote> gegenüber
+	<quote>implizite</quote> Mergeinfo, <quote>operative</quote>
+	gegenüber <quote>inoperativen</quote> Revisionen, besondere
+	Mechanismen von  Mergeinfo-<quote>Auslassung</quote> und sogar
+	<quote>Vererbung</quote> von Eltern- zu
+	Kindverzeichnissen.</para>
 
+<!--
       <para>We've chosen not to cover these detailed topics in this
         book for a couple of reasons.  First, the level of detail is
         absolutely overwhelming for a typical user.  Second, as
@@ -3654,24 +3789,57 @@
         at CollabNet's website: <ulink
         url="http://www.collab.net/community/subversion/articles/merge-info.html"
         />.</para>
+-->
+      <para>Wir haben uns entschieden, diese detaillierten Themen aus
+	einer Reihe von Gründen nicht in diesem Buch zu behandeln.
+	Erstens ist der Detaillierungsgrad für einen normalen
+	Benutzer absolut erdrückend. Zweitens glauben wir, dass das
+	Verständnis diese Konzepte für einen typischen Benutzer nicht
+	unbedigt erforderlich sein <emphasis>sollte</emphasis> während
+	Subversion sich verbessert; letztendlich werden sie als
+	nervige Implementierugsdetails in den Hintergrund treten. Wenn
+	Sie, nachdem dies gesagt ist, diese Dinge mögen, können Sie
+	einen fantastischen Überblick in einer Arbeit nachlesen, die
+	auf der Webseite von CollabNet veröffentlicht ist:<ulink
+	url="http://www.collab.net/community/subversion/articles/merge-info.html"
+	/>.</para>
 
+<!--
       <para>For now, if you want to steer clear of bugs and odd
         behaviors in automatic merging, the CollabNet article
         recommends that you stick to these simple best practices:</para>
+-->
+      <para>Fürs Erste empfiehlt CollabNet, sich an die folgenden
+	bewährten Praktiken zu halten, wenn Sie Fehler und
+	merkwürdiges Verhalten bei automatischen Zusammenführungen
+	vermeiden wollen:</para>
 
       <itemizedlist>
         <listitem>
+<!--
           <para>For short-term feature branches, follow the simple
             procedure described throughout
             <xref linkend="svn.branchmerge.basicmerging"/>.</para>
+-->
+	  <para>Wenden Sie für kurzlebige Arbeitszweige das Verfahren
+	    an, das in <xref linkend="svn.branchmerge.basicmerging"/>
+	    beschrieben wird.</para>
         </listitem>
         <listitem>
+<!--
           <para>For long-lived release branches (as described in
             <xref linkend="svn.branchmerge.commonpatterns"/>),
             perform merges only on the root of the branch, not on
             subdirectories.</para>
+-->
+          <para>Machen Sie Zusammenführungen langlebiger
+	    Release-Zweige (wie in  <xref
+	    linkend="svn.branchmerge.commonpatterns"/> beschrieben)
+	    nur im Wurzelverzeichnis des Zweigs und nicht in
+	    Unterverzeichnissen.</para>
         </listitem>
         <listitem>
+<!--
           <para>Never merge into working copies with a mixture of
             working revision numbers, or with
             <quote>switched</quote> subdirectories (as described next
@@ -3679,18 +3847,42 @@
             target should be a working copy which represents
             a <emphasis>single</emphasis> location in the repository
             at a single point in time.</para>
+-->
+          <para>Machen Sie Zusammenführungen in Arbeitsverzeichnisse
+	    niemals mit einer Mischung aus Arbeitsrevisionsnummern oder
+	    <quote>umgeschalteten</quote> Unterverzeichnissen (wie als
+	    Nächstes in <xref linkend="svn.branchmerge.switchwc"/>
+	    beschrieben). Das Ziel einer Zusammenführung sollte eine
+	    Arbeitskopie sein, die einen <emphasis>einzigen</emphasis>
+	    Ort zu einem einzelnen Zeitpunkt im Repository
+	    repräsentiert.</para>
         </listitem>
         <listitem>
+<!--
           <para>Don't ever edit the <literal>svn:mergeinfo</literal>
             property directly; use <command>svn
-            merge</command> with the <option>--record-only</option> option to effect a desired change
+            merge</command> with the <option>- -record-only</option> option to effect a desired change
             to the metadata (as demonstrated in
             <xref linkend="svn.branchmerge.advanced.blockchanges"/>).</para>
+-->
+          <para>Editieren Sie niemals direkt das Property
+	    <literal>svn:mergeinfo</literal>; verwenden Sie
+	    <command>svn merge</command> mit der Option
+	    <option>--record-only</option>, um eine gewünschte
+	    Änderung an den Metadaten zu bewirken (wie in <xref
+	    linkend="svn.branchmerge.advanced.blockchanges"/>
+	    gezeigt).</para>
         </listitem>
         <listitem>
+<!--
           <para>Always make sure you have complete read access to
             all of your merge sources, and that your target working
             copy has no sparse directories.</para>
+-->
+          <para>Stellen Sie jederzeit sicher, dass Sie vollständigen
+	    Lesezugriff auf die Quellen für die Zussammenführung haben
+	    und dass Ihre Ziel-Arbeitskopie keine dünn besetzten
+	    Verzeichnisse besitzt.</para>
         </listitem>
       </itemizedlist>
 




More information about the svnbook-dev mailing list