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

jmfelderhoff noreply at red-bean.com
Wed Oct 8 16:11:12 CDT 2008


Author: jmfelderhoff
Date: Wed Oct  8 16:11:12 2008
New Revision: 3325

Log:
* ch04-branching-and-merging.xml
  - Tickets ## 149--154 (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	Wed Oct  8 16:11:12 2008
@@ -793,20 +793,38 @@
   <!-- ================================================================= -->
   <!-- ================================================================= -->
   <sect1 id="svn.branchmerge.basicmerging">
+<!--
     <title>Basic Merging</title>
+-->
+    <title>Grundlegendes Zusammenführen</title>
 
+<!--
     <para>Now you and Sally are working on parallel branches of the
       project: you're working on a private branch, and Sally is
       working on the <firstterm>trunk</firstterm>, or main line of
       development.</para>
+-->
+    <para>Nun arbeiten Sie und Sally auf parallelen Zweigen des
+      Projektes: Sie arbeiten auf einem privaten Zweig, und Sally
+      arbeitet auf dem <firstterm>Stamm</firstterm> oder dem
+      Hauptzweig der Entwicklung.</para>
 
+<!--
     <para>For projects that have a large number of contributors, it's
       common for most people to have working copies of the trunk.
       Whenever someone needs to make a long-running change that is
       likely to disrupt the trunk, a standard procedure is to create a
       private branch and commit changes there until all the work is
       complete.</para>
+-->
+    <para>Bei Projekten mit einer großen Zahl von Mitarbeitern haben
+      die meisten gewöhnlich Arbeitskopien vom Stamm. Sobald jemand
+      eine langwierige Änderung machen muss, die wahrscheinlich den
+      Stamm stören würde, ist die Standardvorgehensweise, einen Zweig
+      zu erzeugen und die Änderungen bis zum Abschluss der Arbeiten
+      nach dorthin zu übergeben.</para>
 
+<!--
     <para>So, the good news is that you and Sally aren't interfering
       with each other.  The bad news is that it's very easy to drift
       <emphasis>too</emphasis> far apart.  Remember that one of the
@@ -814,7 +832,17 @@
       that by the time you're finished with your branch, it may be
       near-impossible to merge your changes back into the trunk
       without a huge number of conflicts.</para>
+-->
+    <para>Die gute Nachricht ist also, dass Sie und Sally sich nicht
+      in die Quere kommen. Die schlechte Nachricht ist, dass es sehr
+      leicht ist, <emphasis>zu</emphasis> weit auseinander zu treiben.
+      Erinnnern Sie sich, dass eins der Probleme bei der Strategie
+      <quote>sich in ein Loch zu verkriechen</quote> war, dass es zu
+      dem Zeitpunkt, an dem Sie mit dem Zweig fertig sind, fast
+      unmöglich sein kann, Ihre Änderungen ohne eine riesige Zahl an
+      Konflikten auf den Stamm zurückzuführen.</para>
 
+<!--
     <para>Instead, you and Sally might continue to share changes as
       you work.  It's up to you to decide which changes are worth
       sharing; Subversion gives you the ability to selectively
@@ -825,7 +853,21 @@
       branch to another is called <firstterm>merging</firstterm>, and
       it is performed using various invocations of the <command>svn
       merge</command> command.</para>
+-->
+    <para>Stattdessen könnten Sie und Sally fortfahren, während der
+      Arbeit Änderungen gemeinsam zu verwenden. Es liegt an Ihnen, zu
+      entscheiden, welche Änderungen teilenswert sind; Subversion
+      bietet Ihnen die Fähigkeit, Änderungen selektiv zwischen Zweigen
+      zu <quote>kopieren</quote>. Und wenn Sie mit Ihrem Zweig
+      vollständig fertig sind, kann die gesamte Menge Ihrer Änderungen
+      vom Zweig auf den Stamm zurück kopiert werden. In der
+      Terminologie von Subversion heißt der allgemeine Vorgang,
+      Änderungen von einem Zweig auf einen anderen zu übertragen
+      <firstterm>Zusammenführen</firstterm> (Merging) und wird durch
+      verschiedene Aufrufe des Befehls <command>svn merge</command>
+      durchgeführt.</para>
 
+<!--
     <para>In the examples that follow, we're assuming that both your
       Subversion client and server are running Subversion 1.5 (or
       later).  If either client or server is older than version 1.5,
@@ -839,11 +881,31 @@
       already been merged and what hasn't.  For this reason,
       we <emphasis>strongly</emphasis> recommend that you make sure your
       client and server are at least at version 1.5.</para>
+-->
+    <para>In den folgenden Beispielen gehen wir davon aus, dass sowohl
+      auf Ihrem Subversion-Client als auch auf dem Server Subversion
+      1.5 (oder neuer) läuft. Falls einer von beiden älter als Version
+      1.5 ist, wird es komplizierter: Das System wird Änderungen nicht
+      automatisch mitverfolgen, so dass Sie schmerzhafte manuelle
+      Methoden anwenden müssen, um ähnliche Resultate zu
+      erzielen. Dass heißt, dass Sie stets die detaillierte Syntax
+      beim Zusammenführen verwenden müssen, um bestimmte
+      Revisionsintervalle zu übertragen (siehe <xref
+      linkend="svn.branchmerge.advanced.advancedsyntax"/> weiter unten
+      in diesem Kapitel), und besonders sorgfältig verfolgen müssen,
+      was bereits zusammengeführt ist und was nicht. Aus diesem Grund
+      empfehlen wir Ihnen <emphasis>dringend</emphasis>,
+      sicherzustellen, dass Ihr Client und Server mindestens die
+      Version 1.5 haben.</para>
 
   <!-- =============================================================== -->
     <sect2 id="svn.branchmerge.changesets">
+<!--
       <title>Changesets</title>
+-->
+      <title>Änderungsmengen</title>
 
+<!--
       <para>Before we proceed further, we should warn you that there's
         going to be a lot of discussion of <quote>changes</quote> in
         the pages ahead.  A lot of people experienced with version
@@ -851,7 +913,17 @@
         and <quote>changeset</quote> interchangeably, and we should
         clarify what Subversion understands as
         a <firstterm>changeset</firstterm>.</para>
+-->
+      <para>Bevor wir weitermachen, sollten wir Sie warnen, dass Sie
+        auf den kommenden Seiten viele Erörterungen zum Thema
+        <quote>Änderungen</quote> erwarten. Viele mit
+        Versionskontrollsystemen erfahrene Leute benutzen die Begriffe
+        <quote>Änderung</quote> und <quote>Änderungsmenge</quote>
+        (changeset) austauschbar, so dass wir klären sollten, was
+        Subversion unter einer <firstterm>Änderungsmenge</firstterm>
+        versteht.</para>
 
+<!--
       <para>Everyone seems to have a slightly different definition
         of changeset, or at least a different
         expectation of what it means for a version control system to
@@ -860,7 +932,20 @@
         include textual edits to file contents, modifications to tree
         structure, or tweaks to metadata.  In more common speak, a
         changeset is just a patch with a name you can refer to.</para>
+-->
+      <para>Jeder scheint eine etwas unterschiedliche Definition für
+        den Begriff Änderungsmenge zu haben oder zumindest eine
+        unterschiedliche Erwartung darüber, was es für ein
+        Versionskontrollsystem bedeutet, so etwas zu besitzen. Für
+        unsere Zwecke reicht es aus, zu sagen, dass eine
+        Änderungsmenge lediglich eine Sammlung von Änderungen mit
+        einem eindeutigen Namen ist. Die Änderungen können aus der
+        Bearbeitung an Textdateien, Modifizierungen an der
+        Baumstruktur oder Justierungen an Metadaten bestehen. In
+        einfachen Worten ist eine Änderungsmenge einfach ein Patch mit
+        einem Namen, auf den Sie sich beziehen können.</para>
 
+<!--
       <para>In Subversion, a global revision number N names a tree in
         the repository: it's the way the repository looked after the
         Nth commit.  It's also the name of an implicit changeset: if
@@ -880,13 +965,41 @@
         branch to another by naming them in the merge
         arguments: passing <userinput>-c 9238</userinput> to <command>svn merge</command> would merge
         changeset r9238 into your working copy.</para>
+-->
+      <para>In Subversion bezeichnet eine globale Revisionsnummer N
+        einen Baum im Repository: Sie beschreibt das Aussehen des
+        Repositorys nach der N-ten Übergabe. Sie ist auch der Name
+        einer impliziten Änderungsmenge: Wenn Sie den Baum N mit dem
+        Baum N−1 vergleichen, können Sie genau den Patch
+        ableiten, der übergeben wurde. Daher ist es einfach, sich
+        Revision N nicht nur als Baum sondern auch als Änderungsmenge
+        vorzustellen. Falls Sie ein Fehlerverwaltungssystem verwenden,
+        können Sie die Revisionsnummern benutzen, um auf bestimmte
+        Patches zu verweisen, die Fehler beheben – zum Beispiel:
+        <quote>Dieser Fehler wurde durch r9238 behoben</quote>. Dann
+        kann jemand <userinput>svn log -r 9238</userinput> aufrufen,
+        um den Protokolleintrag zu genau der Änderungsmenge zu lesen,
+        die den Fehler behoben hat, und sich mit <userinput>svn diff
+        -c 9238</userinput> den eigentlichen Patch ansehen.  Und auch
+        (wie Sie bald sehen werden) der Subversion Befehl <command>svn
+        merge</command> kann Revisionsnummern verwenden. Sie können
+        bestimmte Änderungsmengen von einem Zweig mit einem anderen
+        zusammenführen, indem sie in den Argumenten zum entsprechenden
+        Kommando benannt werden: Die Übergabe von <userinput>-c
+        9238</userinput> an <command>svn merge</command> würde das
+        Änderungsmenge r9238 mit Ihrer Arbeitskopie
+        zusammenführen.</para>
 
       </sect2>
 
   <!-- =============================================================== -->
     <sect2 id="svn.branchemerge.basicmerging.stayinsync">
+<!--
       <title>Keeping a Branch in Sync</title>
+-->
+      <title>Einen Zweig synchron halten</title>
 
+<!--
       <para>Continuing with our running example, let's suppose that a
         week has passed since you started working on your private
         branch.  Your new feature isn't finished yet, but at the same
@@ -899,7 +1012,23 @@
         with the main development line helps
         prevent <quote>surprise</quote> conflicts when it comes time
         for you to fold your changes back into the trunk.</para>
+-->
+      <para>Machen wir mit unserem Beispiel weiter und nehmen an, dass
+        eine Woche vergangen ist seitdem Sie begonnen haben, auf
+        Ihrem privaten Zweig zu arbeiten. Ihre Arbeit ist noch nicht
+        beendet, jedoch wissen Sie, dass gleichzeitig andere Leute in
+        Ihrem Team weiterhin wichtige Änderungen im
+        <filename>/trunk</filename> des Projektes gemacht haben. Es
+        ist in Ihrem Interesse, diese Änderungen in Ihren Zweig zu
+        übernehmen, um sicherzustellen, dass sie sich gut mit Ihren
+        Änderungen vertragen. Dies ist tatsächlich eine der besten
+        Vorgehensweisen: Ihren Zweig regelmäßig mit der
+        Hauptentwicklungslinie zu synchronisieren hilft,
+        <quote>überraschende</quote> Konflikte zu vermeiden, wenn es
+        an der Zeit ist, Ihre Änderungen zurück auf den Stamm zu
+        bringen.</para>
 
+<!--
       <para>Subversion is aware of the history of your branch and
         knows when it divided away from the trunk.  To replicate the
         latest, greatest trunk changes to your branch, first make sure
@@ -907,6 +1036,15 @@
         is <quote>clean</quote>—that it has no local
         modifications reported by <command>svn status</command>.  Then
         simply run:</para>
+-->
+      <para>Subversion kennt die Geschichte Ihres Zweigs und weiß,
+        wann Sie ihn vom Stamm abgezweigt haben. Um die letzten,
+        aktuellsten Änderungen vom Stamm auf Ihren Zweig zu bringen,
+        sollten Sie zunächst sicherstellen, dass die Arbeitskopie des
+        Zweigs <quote>sauber</quote> ist – dass sie keine
+        lokalen Änderungen hat, die durch <command>svn
+        status</command> angezeigt werden. Dann rufen Sie einfach die
+        folgenden Befehle auf:</para>
 
       <screen>
 $ pwd
@@ -918,6 +1056,7 @@
 U    integer.c
 </screen>
 
+<!--
       <para>This basic syntax—<userinput>svn merge
         <replaceable>URL</replaceable></userinput>—tells Subversion to merge all recent
         changes from the URL to the current working directory (which
@@ -926,6 +1065,16 @@
         local modifications, and these edits are duplications of all
         of the changes that have happened on the trunk since you first
         created your branch:</para>
+-->
+      <para>Diese einfache Syntax – <userinput>svn merge
+        <replaceable>URL</replaceable></userinput> – fordert
+        Subversion auf, alle neuen Änderungen von dem URL mit dem
+        aktuellen Arbeitsverzeichnis (welches typischerweise das
+        Wurzelverzeichnis Ihrer Arbeitskopie ist)
+        zusammenzuführen. Nach dem Ausführen des vorangegangenen
+        Beispiels enthält Ihre Arbeitskopie nun neue lokale
+        Änderungen, die Nachbildungen all der Änderungen auf dem Stamm
+        seit der Erstellung Ihres Zweiges sind:</para>
 
       <screen>
 $ svn status
@@ -934,6 +1083,7 @@
 M      integer.c
 </screen>
 
+<!--
       <para>At this point, the wise thing to do is look at the changes
         carefully with <command>svn diff</command>, and then build and
         test your branch.  Notice that the current working directory
@@ -945,7 +1095,22 @@
         be needed by future <command>svn merge</command> commands.
         (We'll learn more about this metadata later in the
         chapter.)</para>
+-->
+      <para>Zu diesem Zeitpunkt ist es weise, sich die Änderungen
+        mithilfe von <command>svn diff</command> sorgfältig anzusehen,
+        und anschliessend die Software von Ihrem Zweig zu bauen und zu
+        testen. Beachten Sie, dass auch das aktuelle
+        Arbeitsverzeichnis (<quote><filename>.</filename></quote>)
+        verändert wurde; <command>svn diff</command> zeigt an, dass
+        seine Eigenschaft <literal>svn:mergeinfo</literal> entweder
+        angelegt oder modifiziert wurde. Das ist ein wichtiges
+        Metadatum in Zusammenhang mit Zusammenführungen, das Sie
+        <emphasis>nicht</emphasis> anfassen sollten, da es von
+        künftigen <command>svn merge</command>-Befehlen benötigt wird.
+        (Wir werden später in diesem Kapitel mehr über diese Metadaten
+        erfahren.)</para>
 
+<!--
       <para>After performing the merge, you might also need to resolve
         some conflicts (just as you do with <command>svn
         update</command>) or possibly make some small edits to get
@@ -958,6 +1123,20 @@
         long <quote>what's going on?</quote> discussion with your
         collaborators.  If things look good, however, you can
         submit these changes into the repository:</para>
+-->
+      <para>Nach der Übernahme kann es möglich sein, dass Sie noch
+        einige Konflikte auflösen müssen (wie bei <command>svn
+        update</command>) oder möglicherweise noch einige kleinere
+        Bearbeitungen durchzuführen haben, damit alles wieder
+        funktioniert. (Denken Sie daran, dass die Abwesenheit
+        <emphasis>syntaktischer</emphasis> Konflikte nicht bedeutet,
+        dass keine <emphasis>semantischen</emphasis> Konflikte
+        vorhanden sind!) Falls ernsthafte Probleme auftauchen, können
+        Sie jederzeit die lokalen Änderungen mit <userinput>svn revert
+        . -R</userinput> wieder rückgängig machen und eine lange
+        <quote>was geht hier eigentlich vor</quote>-Unterredung mit
+        Ihren Mitarbeitern führen. Falls jedoch alles gut aussieht,
+        können Sie die Änderungen an das Repository übergeben:</para>
 
       <screen>
 $ svn commit -m "Merged latest trunk changes to my-calc-branch."
@@ -968,20 +1147,36 @@
 Committed revision 357.
 </screen>
 
+<!--
       <para>At this point, your private branch is now <quote>in
           sync</quote> with the trunk, so you can rest easier knowing
           that as you continue to work in isolation, you're not
           drifting too far away from what everyone else is
           doing.</para>
+-->
+      <para>An dieser Stelle ist Ihr Zweig <quote>synchron</quote> mit
+        dem Stamm, und Sie können sich ruhig zurücklehnen in der
+        Gewissheit, dass Sie sich nicht zu weit von der Arbeit aller
+        anderen entfernen, während Sie isoliert weiterarbeiten.</para>
 
       <sidebar>
+<!--
         <title>Why Not Use Patches Instead?</title>
+-->
+        <title>Warum stattdessen keine Patches verwenden?</title>
 
+<!--
         <para>A question may be on your mind, especially if you're a
           Unix user: why bother to use <command>svn merge</command> at
           all?  Why not simply use the operating system's
           <command>patch</command> command to accomplish the same job?
           For example:</para>
+-->
+        <para>Eine Frage könnte Ihnen durch den Kopf gehen, besonders,
+          falls Sie ein Unix-Benutzer sind: Warum soll ich überhaupt
+          <command>svn merge</command> verwenden? Warum kann ich
+          dieselbe Aufgabe nicht mit dem Betriebssystembefehl
+          <command>patch</command> lösen? Zum Beispiel:</para>
 
         <screen>
 $ cd my-calc-branch
@@ -995,6 +1190,7 @@
 done
 </screen>
 
+<!--
         <para>In this particular example, there really isn't much
           difference.  But <command>svn merge</command> has special
           abilities that surpass the <command>patch</command> program.
@@ -1009,7 +1205,26 @@
           all.  <command>svn diff</command> outputs only the limited
           patch format, so there are some ideas it simply can't
           express.</para>
+-->
+        <para>Bei diesem speziellen Beispiel gibt es wahrhaftig keinen
+          großen Unterschied. Allerdings hat <command>svn
+          merge</command> besondere Fähigkeiten, die über die des
+          Programmes <command>patch</command> hinaus gehen. Das von
+          <command>patch</command> verwendete Dateiformat ist sehr
+          eingeschränkt; es kann lediglich Dateiinhalte verändern. Es
+          besteht keine Möglichkeit, Änderungen an
+          <emphasis>Bäumen</emphasis>, etwa das Hinzufügen, Entfernen
+          oder Umbenennen von Dateien und Verzeichnissen
+          abzubilden. Desweiteren bemerkt das Programm
+          <command>patch</command> keine Änderungen an
+          Eigenschaften. Falls Sallys Änderung etwa ein neues
+          Verzeichnis hinzugefügt hätte, wäre es in der Ausgabe von
+          <command>svn diff</command> überhaupt nicht erwähnt worden.
+          <command>svn diff</command> gibt nur das eingeschränkte
+          patch-Format aus, so dass es einige der Konzepte gar nicht
+          wiedergeben kann.</para>
 
+<!--
         <para>The <command>svn merge</command> command, however, can
           express changes in tree structure and properties by directly
           applying them to your working copy.  Even more important,
@@ -1021,15 +1236,37 @@
           usable; without it, users would have to manually keep notes
           on which sets of changes have or haven't been merged
           yet.</para>
+-->
+        <para>Der Befehl <command>svn merge</command> jedoch kann
+          Änderungen an der Baumstruktur und an Eigenschaften
+          erfassen, indem sie direkt auf Ihre Arbeitskopie angewendet
+          werden. Noch wichtiger ist, dass dieser Befehl alle
+          Änderungen festhält, die auf Ihren Zweig angewendet wurden,
+          so dass Subversion genau Bescheid weiß, welche Änderungen an
+          welcher Stelle vorhanden sind (siehe <xref
+          linkend="svn.branchmerge.basicmerging.mergeinfo"/>).  Dies
+          ist eine kritische Fähigkeit, die die Verwaltung von Zweigen
+          brauchbar macht; ohne sie müssten Benutzer sich manuelle
+          Aufzeichnungen darüber machen, welche Änderungsmengen
+          zusammengeführt worden sind und welche noch nicht.</para>
 
       </sidebar>
 
+<!--
       <para>Suppose that another week has passed.  You've committed
         more changes to your branch, and your comrades have continued
         to improve the trunk as well.  Once again, you'd like to
         replicate the latest trunk changes to your branch and bring
         yourself in sync.  Just run the same merge command
         again!</para>
+-->
+      <para>Nehmen wir an, noch eine Woche sei ins Land gegangen. Sie
+        haben weitere Änderungen an Ihren Zweig übergeben, und Ihre
+        Kollegen haben damit weitergemacht, den Stamm zu
+        verbessern. Nun möchten Sie mal wieder die letzten Änderungen
+        vom Stamm mit Ihrem Zweig abgleichen, damit Sie wieder
+        synchron sind. Starten Sie einfach noch einmal den
+        <command>svn merge</command>-Befehl!</para>
 
       <screen>
 $ svn merge http://svn.example.com/repos/calc/trunk
@@ -1039,18 +1276,35 @@
 A    README
 </screen>
 
+<!--
       <para>Subversion knows which trunk changes you've already
         replicated to your branch, so it carefully replicates only
         those changes you don't yet have.  Once again, you'll have to
         build, test, and <command>svn commit</command> the local
         modifications to your branch.</para>
+-->
+      <para>Subversion weiß, welche Änderungen Sie bereits mit Ihrem
+        Zweig abgeglichen haben, so dass es sorgfältig nur die
+        Änderungen berücksichtigt, die Sie noch nicht haben. Einmal
+        mehr müssen Sie bauen, testen und die lokalen Änderungen an
+        Ihren Zweig mit <command>svn commit</command>
+        übergeben.</para>
 
+<!--
       <para>What happens when you finally finish your work, though?
         Your new feature is done, and you're ready to merge your
         branch changes back to the trunk (so your team can enjoy the
         bounty of your labor).  The process is simple.  First, bring
         your branch in sync with the trunk again, just as you've been
         doing all along:</para>
+-->
+      <para>Was passiert jedoch, wenn Sie schließlich Ihre Arbeit
+        abgeschlossen haben? Ihre neue Funktion ist fertig, und Sie
+        sind bereit, die Änderungen von Ihrem Zweig zurück auf den
+        Stamm zu überführen (so dass Ihr Team die Früchte Ihrer Arbeit
+        genießen kann). Die Vorgehensweise ist einfach. Zunächst
+        synchronisieren Sie Ihren Zweig noch einmal mit dem Stamm, wie
+        Sie es bisher gemacht haben:</para>
 
       <screen>
 $ svn merge http://svn.example.com/repos/calc/trunk
@@ -1058,7 +1312,7 @@
 U    button.c
 U    README
 
-$ # build, test, ...
+$ # bauen, testen, ...
 
 $ svn commit -m "Final merge of trunk changes to my-calc-branch."
 Sending        .
@@ -1068,6 +1322,7 @@
 Committed revision 390.
 </screen>
 
+<!--
       <para>Now, you use <command>svn merge</command> to replicate
         your branch changes back into the trunk.  You'll need an
         up-to-date working copy of <filename>/trunk</filename>.  You
@@ -1084,15 +1339,37 @@
         run into some unnecessary conflict-related headaches
         and <command>svn merge</command> will likely return an
         error.</para>
+-->
+      <para>Nun verwenden Sie <command>svn merge</command>, um Ihre
+        Änderungen vom Zweig zurück auf den Stamm zu überführen. Sie
+        benötigen eine aktuelle Arbeitskopie von
+        <filename>/trunk</filename>. Sie bekommen sie entweder durch
+        <command>svn checkout</command>, indem Sie von irgendwo auf
+        Ihrer Platte eine alte Arbeitskopie vom Stamm hervorholen,
+        oder den Befehl <command>svn switch</command> (siehe <xref
+        linkend="svn.branchmerge.switchwc"/>) verwenden. Wie auch
+        immer Sie Ihre Arbeitskopie bereitstellen, denken Sie daran,
+        dass Sie die Überführung in einer Arbeitskopie durchführen,
+        die <emphasis>keine</emphasis> lokalen Änderungen beinhaltet
+        und jüngst aktualisiert wurde (d.h., keine Mischung aus
+        lokalen Revisionen ist). Falls Ihre Arbeitskopie nicht
+        <quote>sauber</quote> in diesem Sinn ist, könnte es Ihnen
+        einige unnötige konfliktbezogene Kopfschmerzen bereiten, und
+        <command>svn merge</command> wird wahrscheinlich einen Fehler
+        ausgeben.</para>
 
+<!--
       <para>Once you have a clean working copy of the trunk, you're
         ready to merge your branch back into it:</para>
+-->
+      <para>Sobald Sie eine saubere Arbeitskopie des Stamms haben,
+        sind Sie bereit, Ihren Zweig damit zusammenzuführen:</para>
 
       <screen>
 $ pwd
 /home/user/calc-trunk
 
-$ svn update  # (make sure the working copy is up to date)
+$ svn update  # (stellen Sie sicher, dass die Arbeitskopie aktuell ist)
 At revision 390.
 
 $ svn merge --reintegrate http://svn.example.com/repos/calc/branches/my-calc-branch
@@ -1102,7 +1379,7 @@
 U    Makefile
  U   .
 
-$ # build, test, verify, ...
+$ # bauen, testen, überprüfen, ...
 
 $ svn commit -m "Merge my-calc-branch back into trunk!"
 Sending        .
@@ -1113,9 +1390,10 @@
 Committed revision 391.
 </screen>
 
+<!--
       <para>Congratulations, your branch has now been remerged back
         into the main line of development.  Notice our use of
-        the <option>--reintegrate</option> option this time around.
+        the <option>- -reintegrate</option> option this time around.
         The option is critical for reintegrating changes from a branch
         back into its original line of development—don't forget
         it!  It's needed because this sort of <quote>merge
@@ -1130,21 +1408,59 @@
         later on, it continues by merging the next contiguously
         available range, 356:380.  When doing the final sync, it
         merges the range 380:385.</para>
+-->
+      <para>Gratulation! Ihr Zweig ist nun zurück in die
+        Hauptentwicklungslinie überführt worden. Beachten Sie, dass
+        dieses Mal die Option <option>--reintegrate</option> verwendet
+        wurde. Diese Option ist kritisch, wenn Änderungen von einem
+        Zweig in die ursprüngliche Entwicklungslinie reintegriert
+        werden – vergessen Sie sie nicht! Sie wird benötigt, da
+        diese Art der <quote>Rücküberführung</quote> etwas anderes
+        ist, als was Sie bisher gemacht haben. Vorher haben wir
+        <command>svn merge</command> aufgefordert, die <quote>nächste
+        Änderungsmenge</quote> von einer Entwicklungslinie (dem Stamm)
+        zu holen und sie mit einer anderen (Ihrem Zweig)
+        abzugleichen. Das ist recht überschaubar, und Subversion weiß
+        jedesmal, wo es wieder ansetzen soll. Bei unseren
+        vorangehenden Beispielen können Sie sehen, dass es erst die
+        Intervalle 345:356 vom Stamm auf den Zweig überführte; später
+        fuhr es mit dem nächsten verfügbaren aufeinanderfolgenden
+        Intervall 356:380 fort.  Wenn Sie die letzte Synchronisierung
+        machen, wird es das Intervall 380:385 zusammenführen.</para>
 
+<!--
       <para>When merging your branch back to the trunk, however, the
         underlying mathematics is quite different.  Your feature
         branch is now a mishmosh of both duplicated trunk changes and
         private branch changes, so there's no simple contiguous range
         of revisions to copy over.  By specifying
-        the <option>--reintegrate</option> option, you're asking
+        the <option>- -reintegrate</option> option, you're asking
         Subversion to carefully replicate <emphasis>only</emphasis>
         those changes unique to your branch.  (And in fact, it does
         this by comparing the latest trunk tree with the latest branch
         tree:  the resulting difference is exactly your branch
         changes!)</para>
+-->
+      <para>Wenn Sie jedoch den Zweig auf den Stamm zurückführen,
+        sehen die dem zugrundeliegenden Berechnungen ganz anders
+        aus. Ihr Zweig ist nun ein Mischmasch aus abgeglichenen
+        Änderungen vom Stamm und privaten Änderungen auf dem Zweig, so
+        dass es kein einfaches, aufeinanderfolgendes Intervall mit
+        Revisionen zum Herüberkopieren gibt. Indem Sie die Option
+        <option>--reintegrate</option> angeben, fordern Sie Subversion
+        auf, sorgfältig <emphasis>nur</emphasis> die Änderungen von
+        Ihrem Zweig zu replizieren. (Und tatsächlich macht es das so,
+        dass es die letzte Version auf dem Stamm mit der letzten
+        Version auf dem Zweig vergleicht: Der Unterschied macht genau
+        die Änderung auf dem Zweig aus!)</para>
 
+<!--
       <para>Now that your private branch is merged to trunk, you may
         wish to remove it from the repository:</para>
+-->
+      <para>Nachdem nun Ihr privater Zweig mit dem Stamm
+        zusammengeführt wurde, können Sie ihn aus dem Repository
+        löschen:</para>
 
       <screen>
 $ svn delete http://svn.example.com/repos/calc/branches/my-calc-branch \
@@ -1152,6 +1468,7 @@
 Committed revision 392.
 </screen>
 
+<!--
       <para>But wait!  Isn't the history of that branch valuable?
         What if somebody wants to audit the evolution of your feature
         someday and look at all of your branch changes?  No need to
@@ -1163,14 +1480,38 @@
         history of your branch.  Your branch can even be resurrected
         at some point, should you desire (see
         <xref linkend="svn.branchmerge.basicmerging.resurrect"/>).</para>
+-->
+      <para>Aber halt! Ist die Geschichte des Zweigs nicht wertvoll?
+        Was, wenn jemand sich eines Tages die Evolution Ihrer Funktion
+        ansehen möchte und hierfür auf die Änderungen des Zweiges
+        schauen möchte? Keine Sorge! Denken Sie daran, dass, obwohl
+        Ihr Zweig nicht mehr im Verzeichnis
+        <filename>/branches</filename> sichtbar ist, seine Existenz
+        gleichwohl ein unveränderbarer Teil der Geschichte des
+        Repositorys ist. Ein einfacher Befehl <command>svn
+        log</command> auf dem <filename>/branches</filename> URL wird
+        die gesamte Geschichte des Zweiges anzeigen. Ihr Zweig kann
+        eines Tages sogar wiederbelebt werden, sollten Sie dieses
+        wünschen (siehe <xref
+        linkend="svn.branchmerge.basicmerging.resurrect"/>).</para>
 
+<!--
       <para>In Subversion 1.5, once
-        a <option>--reintegrate</option> merge is done from branch to trunk,
+        a <option>- -reintegrate</option> merge is done from branch to trunk,
         the branch is no longer usable for further work.  It's not
         able to correctly absorb new trunk changes, nor can it be
         properly reintegrated to trunk again.  For this reason, if you
         want to keep working on your feature branch, we recommend
         destroying it and then re-creating it from the trunk:</para>
+-->
+      <para>Sobald in Subversion 1.5 eine Zusammenführung mit
+        <option>--reintegrate</option> vom Zweig auf den Stamm
+        durchgeführt wurde, kann der Zweig nicht mehr für weitere
+        Arbeiten verwendet werden. Er kann weder Änderungen vom Stamm
+        korrekt absorbieren, noch kann er ordentlich auf den Stamm
+        zurückintegriert werden. Aus diesem Grund sollten Sie ihn
+        zerstören und erneut aus dem Stamm erzeugen, wenn Sie weiter
+        auf dem Zweig arbeiten wollen:</para>
 
       <screen>
 $ svn delete http://svn.example.com/repos/calc/branches/my-calc-branch \
@@ -1188,17 +1529,29 @@
 Updated to revision 393.
 </screen>
 
+<!--
       <para>The final command in the prior example—<command>svn
         switch</command>—is a way of updating an existing working
         copy to reflect a different repository directory.  We'll discuss
         this more in <xref linkend="svn.branchmerge.switchwc"/>.</para>
+-->
+      <para>Der letzte Befehl des vorangegangenen Beispiels –
+        <command>svn switch</command> – ist eine Art, ein
+        bestehendes Arbeitsverzeichnis auf ein unterschiedliches
+        Repository-Verzeichnis zu aktualisieren.  Wir werden das
+        genauer in <xref linkend="svn.branchmerge.switchwc"/>
+        besprechen.</para>
 
     </sect2>
 
     <!-- =============================================================== -->
     <sect2 id="svn.branchmerge.basicmerging.mergeinfo">
+<!--
       <title>Mergeinfo and Previews</title>
+-->
+      <title>Mergeinfo und Vorschauen</title>
 
+<!--
       <para>The basic mechanism Subversion uses to track
         changesets—that is, which changes have been merged to
         which branches—is by recording data in properties.
@@ -1207,9 +1560,23 @@
         files and directories.  (If you're not familiar with
         Subversion properties, now is the time to skim
         <xref linkend="svn.advanced.props"/>.)</para>
+-->
+      <para>Der grundsätzliche Mechanismus, den Subversion verwendet,
+        um Änderungsmengen zu verfolgen – d.h. welche Änderungen
+        auf welchen Zweig übertragen worden sind – besteht aus
+        dem Festhalten von Daten in Eigenschaften. Daten über das
+        Zusammenführen werden speziell in der Eigenschaft
+        <literal>svn:mergeinfo</literal> vermerkt, die an Dateien und
+        Verzeichnissen hängt. (Falls Sie mit Subversion-Eigenschaften
+        nicht vertraut sind, ist es nun an der Zeit, <xref
+        linkend="svn.advanced.props"/> zu überfliegen.)</para>
 
+<!--
       <para>You can examine the property, just like any
         other:</para>
+-->
+      <para>Sie können sich die Eigenschaft ansehen, wie jede andere
+        auch:</para>
 
       <screen>
 $ cd my-calc-branch
@@ -1217,6 +1584,7 @@
 /trunk:341-390
 </screen>
 
+<!--
       <para>It is <emphasis>not</emphasis> recommended that you change
         the value of this property yourself, unless you really know
         what you're doing.  This property is automatically maintained
@@ -1226,18 +1594,39 @@
         path is <filename>/trunk</filename> and the directory which
         has received the specific changes
         is <filename>/branches/my-calc-branch</filename>.</para>
+-->
+      <para>Es wird <emphasis>nicht</emphasis> empfohlen, dass Sie
+        selbst den Wert dieser Eigenschaft ändern, es sei denn, Sie
+        wissen wirklich, was Sie tun. Diese Eigenschaft wird
+        automatisch von Subversion gepflegt, sobald Sie den Befehl
+        <command>svn merge</command> ausführen. Ihr Wert gibt
+        Aufschluss darüber, welche Änderungen (von einem gegebenen
+        Pfad) mit dem in Frage kommenden Verzeichnis abgeglichen
+        wurden. In diesem Fall ist der Pfad
+        <filename>/trunk</filename>, und das Verzeichnis, das die
+        bestimmten Änderungen erhalten hat, ist
+        <filename>/branches/my-calc-branch</filename>.</para>
 
+<!--
       <para>There's also a subcommand, <command>svn
         mergeinfo</command>, which can be helpful in seeing not only
         which changesets a directory has absorbed, but also which
         changesets it's still eligible to receive.  This gives a sort
         of preview of the next set of changes that <command>svn
         merge</command> will replicate to your branch.</para>
+-->
+      <para>Es gibt auch einen Unterbefehl, <command>svn
+        mergeinfo</command>, der hilfreich dabei ist, nicht nur die
+        Änderungsmengen anzuzeigen, die ein Verzeichnis absorbiert
+        hat, sondern auch, welche Änderungsmengen für einen Abgleich
+        noch in Frage kommen. Das ergibt eine Art Vorschau der
+        nächsten Änderungsmengen, die <command>svn merge</command> auf
+        Ihren Zweig abgleichen wird.</para>
 
       <screen>
 $ cd my-calc-branch
 
-# Which changes have already been merged from trunk to branch?
+# Welche Änderungen wurden bereits vom Stamm auf den Zweig abgeglichen?
 $ svn mergeinfo http://svn.example.com/repos/calc/trunk
 r341
 r342
@@ -1247,7 +1636,7 @@
 r389
 r390
 
-# Which changes are still eligible to merge from trunk to branch?
+# Welche Änderungen kommen für einen Abgleich vom Stamm auf den Zweig noch in Frage?
 $ svn mergeinfo http://svn.example.com/repos/calc/trunk --show-revs eligible
 r391
 r392
@@ -1256,6 +1645,7 @@
 r395
 </screen>
 
+<!--
       <para>The <command>svn mergeinfo</command> command requires
         a <quote>source</quote> URL (where the changes would be coming
         from), and takes an optional <quote>target</quote> URL (where
@@ -1265,39 +1655,78 @@
         branch working copy, the command assumes we're interested in
         receiving changes to <filename>/branches/mybranch</filename>
         from the specified trunk URL.</para>
+-->
+      <para>Der Befehl <command>svn mergeinfo</command> erwartet einen
+        <quote>Quell</quote>-URL (woher die Änderungen kommen würden)
+        und einen optionalen <quote>Ziel</quote>-URL (wohin die
+        Änderungen abgeglichen würden). Falls kein Ziel-URL angegeben
+        ist, wird angenommen, dass das aktuelle Arbeitsverzeichnis das
+        Ziel ist. Weil wir im vorangegangenen Beispiel unser
+        Arbeitsverzeichnis vom Zweig abfragen, geht der Befehl davon
+        aus, dass wir daran interessiert sind, Änderungen für
+        <filename>/branches/mybranch</filename> vom angegebenen
+        Stamm-URL zu erhalten.</para>
 
+<!--
       <para>Another way to get a more precise preview of a merge
-        operation is to use the <option>--dry-run</option>
+        operation is to use the <option>- -dry-run</option>
         option:</para>
+-->
+      <para>Eine andere Methode, eine genauere Vorschau auf einen
+        Abgleich zu bekommen, ist die Verwendung der Option
+        <option>--dry-run</option>:</para>
 
       <screen>
 $ svn merge http://svn.example.com/repos/calc/trunk --dry-run
 U    integer.c
 
 $ svn status
-#  nothing printed, working copy is still unchanged.
+#  es wird nichts ausgegeben, die Arbeitskopie ist unverändert
 </screen>
 
-      <para>The <option>--dry-run</option> option doesn't actually
+<!--
+      <para>The <option>- -dry-run</option> option doesn't actually
         apply any local changes to the working copy.  It shows only
         status codes that <emphasis>would</emphasis> be printed in a
         real merge.  It's useful for getting a <quote>high-level</quote>
         preview of the potential merge, for those times
         when running <command>svn diff</command> gives too much
         detail.</para>
+-->
+      <para>Die Option <option>--dry-run</option> macht tatsächlich
+        überhaupt keine lokalen Änderungen an der Arbeitskopie. Sie
+        zeigt nur Status-Codes, die ausgegeben
+        <emphasis>würden</emphasis>, wenn ein echter Abgleich
+        stattfände. Sie ist nützlich, um eine Vorschau für einen
+        möglichen Abgleich auf <quote>hoher Ebene</quote> zu erhalten,
+        falls <command>svn diff</command> zu detailliert wäre.</para>
 
       <tip>
+<!--
         <para>After performing a merge operation, but before committing
           the results of the merge, you can use <userinput>svn diff
-          --depth=empty <replaceable>/path/to/merge/target</replaceable></userinput> to see only
+          - -depth=empty <replaceable>/path/to/merge/target</replaceable></userinput> to see only
           the changes to the immediate target of your merge.  If your
           merge target was a directory, only property differences will
           be displayed.  This is a handy way to see the changes to the
           <literal>svn:mergeinfo</literal> property recorded by the
           merge operation, which will remind you about what you've
           just merged.</para>
+-->
+        <para>Nach dem Durchführen eines Abgleichs, aber vor der
+          Übergabe des Ergebnisses, können Sie <userinput>svn diff
+          --depth=empty
+          <replaceable>/pfad/zum/abgleichs/ziel</replaceable></userinput>
+          verwenden, um nur die Änderungen am unmittelbaren Ziel des
+          Abgleichs zu sehen. Falls das Ziel ein Verzeichnis war,
+          werden nur Unterschiede von Eigenschaften angezeigt. Das ist
+          eine praktische Methode, um sich die Änderungen an der
+          Eigenschaft <literal>svn:mergeinfo</literal> anzusehen, die
+          dort durch den Abgleich vermerkt wurden, und die Sie daran
+          erinnern, was Sie eben abgeglichen haben.</para>
       </tip>
 
+<!--
       <para>Of course, the best way to preview a merge operation is to
         just do it!  Remember, running <command>svn merge</command>
         isn't an inherently risky thing (unless you've made local
@@ -1308,8 +1737,23 @@
         your working copy and retry the command with different
         options.  The merge isn't final until you
         actually <command>svn commit</command> the results.</para>
+-->
+      <para>Natürlich ist die beste Methode, eine Vorschau eines
+        Abgleichs zu erhalten, ihn zu machen! Denken Sie daran, dass
+        der Aufruf von <command>svn merge</command> an sich nichts
+        Riskantes ist (es sei denn, sie haben lokale Änderungen an
+        Ihrer Arbeitskopie gemacht – aber wir haben bereits
+        betont, dass Sie in eine derartige Umgebung nicht abgleichen
+        sollten). Falls Ihnen das Ergebnis des Abgleichs nicht
+        gefallen sollte, rufen Sie einfach <userinput>svn revert
+        . -R</userinput> auf, um die Änderungen an Ihrer Arbeitskopie
+        rückgängig zu machen, und versuchen Sie den Befehl erneut mit
+        unterschiedlichen Optionen. Der Abgleich ist solange nicht
+        endgültig, bis Sie mit <command>svn commit</command> das
+        Ergebnis übergeben.</para>
 
       <tip>
+<!--
         <para>While it's perfectly fine to experiment with merges by
           running <command>svn merge</command> and <command>svn
           revert</command> over and over, you may run into some
@@ -1324,14 +1768,36 @@
           copy and remove unversioned files and directories.  The
           output of <command>svn status</command> should be as clean
           as possible, ideally showing no output.</para>
+-->
+        <para>Während es vollkommen in Ordnung ist, durch wiederholte
+          Aufrufe von <command>svn merge</command> und <command>svn
+          revert</command> mit Abgleichen zu experimentieren, könnte
+          es allerdings sein, dass Sie über einige lästige (aber
+          leicht zu umgehende) Fallstricke stolpern. Wenn zum Beispiel
+          durch den Abgleich eine neue Datei hinzugefügt wird (d.h.,
+          sie wird zum Hinzufügen markiert), so wird <command>svn
+          revert</command> sie nicht wirklich entfernen; es entfernt
+          lediglich die Markierung zum Hinzufügen. Was übrig bleibt,
+          ist eine unversionierte Datei. Wenn Sie dann den Abgleich
+          erneut versuchen, könnten Sie einen Konflikt bekommen, weil
+          die unversionierte Datei <quote>im Weg steht</quote>. Die
+          Lösung? Nach dem Rückgängigmachen sollten Sie die
+          Arbeitskopie aufräumen und unversionierte Dateien und
+          Verzeichnisse entfernen. Die Ausgabe von <command>svn
+          status</command> sollte so sauber wie möglich sein und
+          idealerweise gar nichts anzeigen.</para>
       </tip>
 
     </sect2>
 
     <!-- =============================================================== -->
     <sect2 id="svn.branchmerge.basicmerging.undo">
+<!--
       <title>Undoing Changes</title>
+-->
+      <title>Änderungen rückgängig machen</title>
 
+<!--
       <para>An extremely common use for <command>svn merge</command>
         is to roll back a change that has already been committed.
         Suppose you're working away happily on a working copy of
@@ -1343,8 +1809,24 @@
         working copy, and then commit the local modification to the
         repository.  All you need to do is to specify a
         <emphasis>reverse</emphasis> difference.  (You can do this by
-        specifying <option>--revision 303:302</option>, or by an
-        equivalent <option>--change -303</option>.)</para>
+        specifying <option>- -revision 303:302</option>, or by an
+        equivalent <option>- -change -303</option>.)</para>
+-->
+      <para>Sehr häufig wird <command>svn merge</command> verwendet,
+        um eine Änderung rückgängig zu machen, die bereits an das
+        Repository übergeben worden war. Nehmen wir einmal an, Sie
+        arbeiten fröhlich in einer Arbeitskopie von
+        <filename>/calc/trunk</filename> und entdecken, dass die
+        damalige Änderung an <filename>integer.c</filename> in
+        Revision 303 völlig falsch war. Sie hätte nie übergeben werden
+        sollen. Sie können <command>svn merge</command> verwenden, um
+        die Änderung in Ihrer Arbeitskopie
+        <quote>zurückzunehmen</quote>, und dann die lokale Änderung an
+        das Repository übergeben. Alles, was Sie hierfür tun müssen,
+        ist, eine <emphasis>umgekehrte</emphasis> Differenz anzugeben.
+        (Sie machen das durch die Angabe von <option>--revision
+        303:302</option> oder durch das äquivalente <option>--change
+        -303</option>.)</para>
 
 
       <screen>
@@ -1358,7 +1840,7 @@
 
 $ svn diff
 …
-# verify that the change is removed
+# überprüfen, ob die Änderung entfernt wurde
 …
 
 $ svn commit -m "Undoing change committed in r303."
@@ -1367,6 +1849,7 @@
 Committed revision 350.
 </screen>
 
+<!--
       <para>As we mentioned earlier, one way to think about a
         repository revision is as a specific changeset.  By using the
         <option>-r</option> option, you can ask <command>svn
@@ -1375,7 +1858,19 @@
         change, we're asking <command>svn merge</command> to apply
         changeset #303 to our working copy
         <emphasis>backward</emphasis>.</para>
+-->
+      <para>Wie wir früher bereits erwähnten, kann man eine
+        Repository-Version als eine bestimmte Änderungsmenge
+        betrachten. Bei Verwendung der Option <option>-r</option> wird
+        <command>svn merge</command> aufgefordert, eine Änderungsmenge
+        oder ein ganzes Intervall von Änderungsmengen auf Ihre
+        Arbeitskopie anzuwenden. In unserem Fall, bei dem wir eine
+        Änderung zurücknehmen, fordern wir <command>svn
+        merge</command> auf, die Änderungsmenge #303
+        <emphasis>rückwärts</emphasis> auf unsere Arbeitskopie
+        anzuwenden.</para>
 
+<!--
       <para>Keep in mind that rolling back a change like this is just
         like any other <command>svn merge</command> operation, so you
         should use <command>svn status</command> and <command>svn
@@ -1384,13 +1879,32 @@
         to send the final version to the repository.  After
         committing, this particular changeset is no longer reflected
         in the <literal>HEAD</literal> revision.</para>
+-->
+      <para>Merken Sie sich, dass ein solches Rückgängigmachen wie
+        jeder andere <command>svn merge</command>-Vorgang ist, so dass
+        Sie <command>svn status</command> und <command>svn
+        diff</command> benutzen sollten, um sicherzustellen, dass Ihre
+        Arbeit in dem Zustand ist, den Sie haben möchten, und
+        verwenden Sie anschließend <command>svn commit</command>, um
+        die endgültige Version in das Repository zu bringen. Nach der
+        Übergabe wird sich diese bestimmte Änderungsmenge nicht mehr
+        in der <literal>HEAD</literal>-Revision wiederfinden.</para>
 
+<!--
       <para>Again, you may be thinking: well, that really didn't undo
         the commit, did it?  The change still exists in revision 303.
         If somebody checks out a version of the
         <filename>calc</filename> project between revisions 303 and
         349, she'll still see the bad change, right?</para>
+-->
+      <para>Nun denken Sie vielleicht: Gut, aber das hat doch nicht
+        wirklich die Übergabe rückgängig gemacht, oder? Die Änderung
+        besteht immer noch in Revision 303. Falls jemand eine Version
+        des Projektes <filename>calc</filename> zwischen den
+        Revisionen 303 und 349 auscheckt, wird doch trotzdem die
+        fehlerhafte Änderung sichtbar, oder nicht?</para>
 
+<!--
       <para>Yes, that's true.  When we talk about
         <quote>removing</quote> a change, we're really talking about
         removing it from the <literal>HEAD</literal> revision.  The
@@ -1414,20 +1928,60 @@
             for a possible workaround.</para>
         </footnote>
       </para>
+-->
+      <para>Ja, das stimmt. Wenn wir davon sprechen, eine Änderung zu
+        <quote>entfernen</quote>, sprechen wir eigentlich darüber, sie
+        aus der <literal>HEAD</literal>-Revision zu entfernen. Die
+        ursprüngliche Änderung besteht immer noch in der Geschichte
+        des Repositorys. Für die meisten Situationen ist das
+        ausreichend. Die meisten Leute sind sowieso nur am
+        <literal>HEAD</literal> eines Projektes interessiert. Es gibt
+        jedoch Spezialfälle, in denen Sie wirklich alle Beweise der
+        Übergabe vernichten möchten.  (Vielleich hat jemand ein
+        vertrauliches Dokument in das Repository übergeben.) Das ist
+        leider nicht so einfach, da Subversion absichtlich so
+        konstruiert wurde, dass es niemals Informationen
+        verliert. Revisionen sind unveränderliche Bäume, die
+        aufeinander aufbauen. Die Beseitigung einer Revision aus der
+        Geschichte würde einen Dominoeffekt auslösen, Chaos in allen
+        nachfolgenden Revisionen anrichten und möglicherweise alle
+        Arbeitskopien ungültig machen.
+        <footnote>
+          <para>Allerdings gibt es im Subversion-Project Pläne, eines
+            Tages einen Befehl zu implementieren, der die Aufgabe
+            erledigen würde, Informationen dauerhaft zu löschen. Bis
+            dahin, siehe 
+            <xref linkend="svn.reposadmin.maint.tk.svndumpfilter"/>
+            für einen möglichen Notbehelf.</para>
+        </footnote>
+      </para>
 
     </sect2>
 
     <!-- =============================================================== -->
     <sect2 id="svn.branchmerge.basicmerging.resurrect">
+<!--
       <title>Resurrecting Deleted Items</title>
+-->
+      <title>Zurückholen gelöschter Objekte</title>
 
+<!--
       <para>The great thing about version control systems is that
         information is never lost.  Even when you delete a file or
         directory, it may be gone from the <literal>HEAD</literal>
         revision, but the object still exists in earlier revisions.
         One of the most common questions new users ask is, <quote>How
         do I get my old file or directory back?</quote></para>
+-->
+      <para>Das tolle an Versionskontrollsystemen ist, dass
+        Informationen nie verlorengehen. Selbst wenn Sie eine Datei
+        oder ein Verzeichnis löschen, ist es zwar nicht mehr in der
+        <literal>HEAD</literal>-Revision vorhanden, jedoch noch in
+        früheren Revisionen. Eine der häufigsten Fragen neuer Benutzer
+        ist: <quote>Wie bekomme ich meine alte Datei oder mein altes
+        Verzeichnis zurück?</quote></para>
 
+<!--
       <para>The first step is to define
         exactly <emphasis>which</emphasis> item you're
         trying to resurrect.  Here's a useful metaphor: you can think
@@ -1439,17 +1993,44 @@
         <quote>peg revision</quote>
         syntax—foo.c at 224—mentioned back in
         <xref linkend="svn.advanced.pegrevs"/>.) </para>
+-->
+      <para>Der erste Schritt ist es, genau zu definieren
+        <emphasis>welches</emphasis> Objekt Sie zurückholen
+        möchten. Hier ist eine nützliche Metapher: Sie können sich
+        vorstellen, dass jedes Objekt im Repository in einem
+        zweidimensionalen Koordinatensystem befindet. Die erste
+        Koordinate ist ein bestimmter Revisionsbaum und die zweite
+        Koordinate ist ein Pfad innerhalb dieses Baumes. So kann jede
+        Version Ihrer Datei oder Ihres Verzeichnisses durch ein
+        bestimmtes Koordinatenpaar definiert werden. (Erinnern Sie
+        sich an die Syntax einer <quote>Peg-Revision</quote> –
+        foo.c at 224 – die in <xref
+        linkend="svn.advanced.pegrevs"/> erwähnt wurde.) </para>
 
+<!--
       <para>First, you might need to use <command>svn log</command> to
         discover the exact coordinate pair you wish to resurrect.  A
-        good strategy is to run <userinput>svn log --verbose</userinput>
+        good strategy is to run <userinput>svn log - -verbose</userinput>
         in a directory that used to contain your deleted item.  The
-        <option>--verbose</option> (<option>-v</option>) option shows
+        <option>- -verbose</option> (<option>-v</option>) option shows
         a list of all changed items in each revision; all you need to
         do is find the revision in which you deleted the file or
         directory.  You can do this visually, or by using another tool
         to examine the log output (via <command>grep</command>, or
         perhaps via an incremental search in an editor).</para>
+-->
+      <para>Zunächt sollten Sie <command>svn log</command> benutzen,
+        um das exakte Koordinatenpaar zu ermitteln, das Sie
+        zurückholen wollen. Eine gute Strategie ist es, <userinput>svn
+        log --verbose</userinput> in einem Verzeichnis aufzurufen, in
+        dem das gelöschte Objekt einmal enthalten war. Die Option
+        <option>--verbose</option> (<option>-v</option>) gibt eine
+        Liste aller geänderten Objekte in jeder Revision aus; Sie
+        müssen nur noch die Revision finden, in der Sie die Datei oder
+        das Verzeichnis gelöscht haben. Sie können das visuell tun
+        oder ein Werkzeug zur Untersuchung der Protokollausgaben
+        einsetzen (mit <command>grep</command> oder vielleicht durch
+        eine inkrementelle Suche in einem Editor).</para>
 
       <screen>
 $ cd parent-dir
@@ -1466,6 +2047,7 @@
 …
 </screen>
 
+<!--
       <para>In the example, we're assuming that you're looking for a
         deleted file <filename>real.c</filename>.  By looking through
         the logs of a parent directory, you've spotted that this file
@@ -1474,11 +2056,28 @@
         Conclusion: you want to resurrect the path
         <filename>/calc/trunk/real.c</filename> from revision
         807.</para>
+-->
+      <para>In diesem Beispiel nehmen wir an, dass Sie nach der
+        gelöschten Datei <filename>real.c</filename> suchen. Beim
+        Durchsehen der Protokolle des Elternverzeichnisses haben Sie
+        entdeckt, dass diese Datei in Revision 808 gelöscht
+        wurde. Daher war die letzte Revision in der die Datei noch
+        vorhanden war die unmittelbare Vorgänger-Revision. Die
+        Schlussfolgerung: Sie möchten den Pfad
+        <filename>/calc/trunk/real.c</filename> aus Revision 807
+        zurückholen.</para>
 
+<!--
       <para>That was the hard part—the research.  Now that you
         know what you want to restore, you have two different
         choices.</para>
+-->
+      <para>Das war der schwierige Teil – die
+        Nachforschung. Nun, da Sie wissen, was Sie wiederherstellen
+        wollen, haben Sie die Wahl zwischen zwei verschiedenen
+        Methoden.</para>
 
+<!--
       <para>One option is to use <command>svn merge</command> to apply
         revision 808 <quote>in reverse.</quote> (We already
         discussed how to undo changes in
@@ -1487,7 +2086,18 @@
         as a local modification.  The file would be scheduled for
         addition, and after a commit, the file would again exist
         in <literal>HEAD</literal>.</para>
+-->
+      <para>Die eine Option ist, <command>svn merge</command> zu
+        verwenden, um Revision 808 <quote>rückwärts</quote>
+        anzuwenden. (Wir haben bereits in
+        <xref linkend="svn.branchmerge.basicmerging.undo"/>
+        besprochen, wie Änderungen rückgängig gemacht werden.) Das
+        hätte den Effekt, <filename>real.c</filename> als lokale
+        Änderung erneut hinzuzufügen. Die Datei würde zum Hizufügen
+        ins Repository markiert, und nach der Übergabe wäre die Datei
+        wieder in <literal>HEAD</literal> vorhanden.</para>
 
+<!--
       <para>In this particular example, however, this is probably not
         the best strategy.  Reverse-applying revision 808 would not
         only schedule <filename>real.c</filename> for addition, but
@@ -1498,12 +2108,33 @@
         <filename>integer.c</filename>, but this technique doesn't
         scale well.  What if 90 files were changed in revision
         808?</para>
+-->
+      <para>In diesem besonderen Beispiel ist das aber wahrscheinlich
+        nicht die beste Strategie. Die Rückwärts-Anwendung von
+        Revision 808 würde nicht nur <filename>real.c</filename> zum
+        Hinzufügen markieren, sondern, wie aus den Protokollmeldungen
+        hervorgeht, dass ebenso bestimmte Änderungen an
+        <filename>integer.c</filename> zurücknehmen, was Sie aber
+        nicht wollen. Sie können sicherlich Revision 808 rückwärts
+        anwenden und dann mit <command>svn revert</command> die
+        lokalen Änderungen an <filename>integer.c</filename>
+        zurücknehmen; allerdings ist diese Technik nicht sehr
+        effektiv. Was wäre, wenn 90 Dateien in Revision 808 geändert
+        worden wären?</para>
 
+<!--
       <para>A second, more targeted strategy is not to use
         <command>svn merge</command> at all, but rather to use the
         <command>svn copy</command> command.  Simply copy the exact
         revision and path <quote>coordinate pair</quote> from the
         repository to your working copy:</para>
+-->
+      <para>Eine zweite, zielorientiertere, Strategie ist es, den
+        Befehl <command>svn merge</command> überhaupt nicht zu
+        verwenden, sondern stattdessen <command>svn
+        copy</command>. Kopieren Sie einfach das exakte
+        <quote>Koordinatenpaar</quote> aus Revision und Pfad vom
+        Repository in Ihre Arbeitskopie:</para>
 
       <screen>
 $ svn copy http://svn.example.com/repos/calc/trunk/real.c@807 ./real.c
@@ -1517,6 +2148,7 @@
 Committed revision 1390.
 </screen>
 
+<!--
       <para>The plus sign in the status output indicates that the item
         isn't merely scheduled for addition, but scheduled for
         addition <quote>with history.</quote>  Subversion remembers
@@ -1530,6 +2162,21 @@
         to resurrect the file <emphasis>without</emphasis>
         maintaining a historical link to the old file, this technique
         works just as well:</para>
+-->
+      <para>Das Plus-Zeichen in der Statusausgabe zeigt an, dass das
+        Objekt nicht bloß zu Hinzufügen vorgemerkt ist, sondern zum
+        Hinzufügen <quote>mit Geschichte</quote>. Subversion merkt
+        sich, woher es kopiert wurde. Künftig wird beim Anwenden von
+        <command>svn log</command> auf diese Datei die gesamte
+        Geschichte, über das Zurückholen hinweg, inklusive der
+        Geschichte vor Revision 807 durchlaufen. In anderen Worten,
+        dieses neue <filename>real.c</filename> ist nicht wirklich
+        neu; es ist ein direkter Nachfahre der ursprünglichen,
+        gelöschten Datei. Dies ist normalerweise eine gute und
+        nützliche Sache. Falls Sie jedoch die Datei
+        <emphasis>ohne</emphasis> geschichtliche Verbindung zur alten
+        Datei zurückholen wollen, funktioniert diese Technik
+        ebensogut:</para>
 
       <screen>
 $ svn cat http://svn.example.com/repos/calc/trunk/real.c@807 > ./real.c
@@ -1543,11 +2190,20 @@
 Committed revision 1390.
 </screen>
 
+<!--
       <para>Although our example shows us resurrecting a file, note
         that these same techniques work just as well for resurrecting
         deleted directories.  Also note that a resurrection doesn't
         have to happen in your working copy—it can happen
         entirely in the repository:</para>
+-->
+      <para>Obwohl unser Beispiel zeigt, wie eine Datei zurückgeholt
+        wird, sollten sie beachten, dass dieselben Techniken auch beim
+        Wiederherstellen von gelöschten Verzeichnissen
+        funktionieren. Beachten Sie auch, dass die Wiederherstellung
+        nicht unbedingt in Ihrer Arbeitskopie passieren muss –
+        sie kann auch vollständig im Repository ausgeführt
+        werden:</para>
 
       <screen>
 $ svn copy http://svn.example.com/repos/calc/trunk/real.c@807 \




More information about the svnbook-dev mailing list