[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