[svnbook] r4761 committed - Translation: Blocking Changes

svnbook at googlecode.com svnbook at googlecode.com
Thu May 1 05:39:47 CDT 2014


Revision: 4761
Author:   jmfelderhoff at gmx.eu
Date:     Thu May  1 10:39:37 2014 UTC
Log:      Translation: Blocking Changes

http://code.google.com/p/svnbook/source/detail?r=4761

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

=======================================
--- /branches/1.7/de/book/ch04-branching-and-merging.xml	Sun Apr 27  
11:35:03 2014 UTC
+++ /branches/1.7/de/book/ch04-branching-and-merging.xml	Thu May  1  
10:39:37 2014 UTC
@@ -4503,17 +4503,17 @@

  <!--
        <para>Sometimes there's a particular changeset that you don't
-        want to be automatically merged.  For example, perhaps your
+        want automatically merged.  For example, perhaps your
          team's policy is to do new development work on
-        <filename>/trunk</filename>, but to be more conservative about
+        <filename>/trunk</filename>, but is more conservative about
          backporting changes to a stable branch you use for releasing
          to the public.  On one extreme, you can manually cherrypick
          single changesets from the trunk to the branch—just the
          changes that are stable enough to pass muster.  Maybe things
          aren't quite that strict, though; perhaps most of the time
-        you'd like to just let <command>svn merge</command>
+        you just let <command>svn merge</command>
          automatically merge most changes from trunk to branch.  In
-        this case, you'd like a way to mask a few specific changes
+        this case, you want a way to mask a few specific changes
          out, that is, prevent them from ever being automatically
          merged.</para>
  -->
@@ -4529,26 +4529,25 @@
          die Änderungen, die stabil genug sind, um die Qualitätsprüfung
          zu bestehen. Vielleicht ist es ja auch nicht ganz so streng,
          und Sie möchten normalerweise, dass <command>svn
-          merge</command> die meisten Änderungen vom Stamm automatisch
-        mit dem Zweig zusammenführt. In diesem Fall könnten Sie ein
-        Verfahren gebrauchen, dass es Ihnen erlaubt, einige bestimmte
+        merge</command> die meisten Änderungen vom Stamm automatisch
+        mit dem Zweig zusammenführt. In diesem Fall brauchen Sie ein
+        Verfahren, dass es Ihnen erlaubt, einige bestimmte
          Änderungen auszulassen, d.h. zu vermeiden, dass sie
          automatisch in den Zweig eingebracht werden.</para>

  <!--
-      <para>In Subversion 1.6, the only way to block a changeset is to
-        make the system believe that the change has
+      <para>Through Subversion 1.7, the only way to block a changeset
+        is to make the system believe that the change has
          <emphasis>already</emphasis> been merged.  To do this, invoke
-        a merge command with the <option>- -record-only</option>
+        the merge subcommand with the <option>- -record-only</option>
          option:</para>
  -->
-      <para>Die einzige Möglichkeit, mit Subversion 1.6 eine
+      <para>Die einzige Möglichkeit, über Subversion 1.7 eine
          Änderungsmenge zu blockieren, besteht darin, dem System
          vorzugaukeln, dass die Änderung <emphasis>bereits</emphasis>
-        eingearbeitet wurde. Dazu rufen Sie den Befehl mit der Option
+        eingearbeitet wurde. Dazu rufen Sie den Unterbefehl mit der Option
          <option>--record-only</option> auf:</para>

-<!--
        <informalexample>
          <screen>
  $ cd my-calc-branch
@@ -4556,8 +4555,16 @@
  $ svn propget svn:mergeinfo .
  /trunk:1680-3305

+<!--
  # Let's make the metadata list r3328 as already merged.
-$ svn merge -c 3328 - -record-only http://svn.example.com/repos/calc/trunk
+-->
+# In den Metadaten r3328 als bereits zusammengeführt vermerken.
+$ svn merge -c 3328 --record-only ^/calc/trunk
+<!--
+- - - Recording mergeinfo for merge of r3328 into '.':
+-->
+- Aufzeichnung der Informationen für Zusammenführung von r3328 in ».«:
+ U   .

  $ svn status
  M       .
@@ -4565,36 +4572,162 @@
  $ svn propget svn:mergeinfo .
  /trunk:1680-3305,3328

+<!--
  $ svn commit -m "Block r3328 from being merged to the branch."
+-->
+$ svn commit -m "Das Zusammenführen von r3328 mit dem Zweig verhindern."
  …
  </screen>
        </informalexample>
+
+<!--
+      <para>Beginning with Subversion 1.7, <option>- -record-only</option>
+        merges are transitive.  This means that, in addition to recording
+        mergeinfo describing the blocked revision(s), any
+        <literal>svn:mergeinfo</literal> property differences in the
+        merge source are also applied.  For example, let's say we want to
+        block the 'frazzle' feature from ever being merged from
+        <filename>^/trunk</filename> to our
+        <filename>^/branches/proj-X</filename> branch.  We know that all
+        the frazzle work was done on its own branch, which was
+        reintegrated to <filename>trunk</filename> in revision 1055:</para>
  -->
+      <para>Beginnend mit Subversion 1.7 sind Zusammenführungen mit
+        <option>--record-only</option> transitiv. Das bedeutet, dass
+        zusätzlich zur Aufzeichnung der
+        Zusammenführungs-Informationen, die die blockierte(n)
+        Revision(en) beschreiben, alle Unterschiede der Eigenschaft
+        <literal>svn:mergeinfo</literal> der Quelle ebenfalls
+        angewendet werden. Sagen wir zum Beispiel mal, dass wir die
+        Zusammenführung der "Frazzle"-Funktionalität von
+        <filename>^/trunk</filename> mit unserem
+        <filename>^/branches/proj-X</filename> Zweig für immer
+        blockieren möchten. Wir wissen, dass die gesamte Arbeit an
+        "Frazzle" auf seinem eigenen Zweig gemacht wurde, der in
+        Revision 1055 wieder in <filename>trunk</filename>
+        eingegliedert wurde:</para>
+
        <informalexample>
          <screen>
-$ cd my-calc-branch
+$ svn log -v ^/trunk -r 1055
+------------------------------------------------------------------------
+<!--
+r1055 | francesca | 2011-09-22 07:40:06 -0400 (Thu, 22 Sep 2011) | 3 lines
+Changed paths:
+-->
+r1055 | francesca | 2011-09-22 07:40:06 -0400 (Do, 22. Sep 2011) | 3 Zeilen
+Geänderte Pfade:
+   M /trunk
+   M /trunk/src/frazzle.c

-$ svn propget svn:mergeinfo .
-/trunk:1680-3305
+<!--
+Reintegrate the frazzle-feature-branch to trunk.
+-->
+Den Frazzle-Zweig wieder in trunk eingegliedert.
+</screen>
+      </informalexample>

-# In den Metadaten r3328 als bereits zusammengeführt vermerken.
-$ svn merge -c 3328 --record-only http://svn.example.com/repos/calc/trunk
+<!--
+      <para>Because revision 1055 was a reintegrate merge we know
+        that mergeinfo was recorded describing the merge:</para>
+-->
+      <para>Da Revision 1055 eine Zusammenführung zur
+        Wiedereingliederung war, wissen wir, dass beschreibende
+        Informationen aufgezeichnet wurden:</para>

-$ svn status
-M       .
+      <informalexample>
+        <screen>
+$ svn diff ^/trunk -c 1055 --depth empty
+Index: .
+===================================================================
+--- .   (revision 1054)
++++ .   (revision 1055)

-$ svn propget svn:mergeinfo .
-/trunk:1680-3305,3328
-
-$ svn commit -m "Das Zusammenführen von r3328 mit dem Zweig verhindern."
-…
+<!--
+Property changes on: .
+-->
+Eigenschaftsänderungen: .
+___________________________________________________________________
+<!--
+Modified: svn:mergeinfo
+   Merged /branches/frazzle-feature-branch:r997-1003
+-->
+Modifiziert: svn:mergeinfo
+   Zusammengeführt /branches/frazzle-feature-branch:r997-1003
  </screen>
        </informalexample>

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

+      <informalexample>
+        <screen>
+$ cd branches/proj-X
+
+$ svn merge ^/trunk . -c 1055 --record-only
  <!--
-      <para>This technique works, but it's also a little bit
+- - - Merging r1055 into '.':
+-->
+-- Zusammenführen von r1055 in ».«:
+ G   .
+<!--
+- - - Recording mergeinfo for merge of r1055 into '.':
+-->
+-- Aufzeichnung der Informationen für Zusammenführung von r1055 in ».«:
+ G   .
+
+$ svn diff --depth empty .
+Index: .
+===================================================================
+<!--
+- - - .   (revision 1070)
++++ .   (working copy)
+
+Property changes on: .
+___________________________________________________________________
+Modified: svn:mergeinfo
+   Merged /trunk:r1055
+   Merged /branches/frazzle-feature-branch:r997-1003
+-->
+--- .   (Revision 1070)
++++ .   (Arbeitskopie)
+
+Eigenschaftsänderungen: .
+___________________________________________________________________
+Geändert: svn:mergeinfo
+   Zusammengeführt /trunk:r1055
+   Zusammengeführt /branches/frazzle-feature-branch:r997-1003
+</screen>
+      </informalexample>
+
+<!--
+      <para>Blocking changes with <option>- -record-only</option>
+        works, but it's also a little bit
          dangerous.  The main problem is that we're not clearly
          differentiating between the ideas of <quote>I already have
          this change</quote> and <quote>I don't have this change, but
@@ -4608,21 +4741,22 @@
          to record them in a text file somewhere, or perhaps in an
          invented property.</para>
  -->
-      <para>Diese Technik funktioniert zwar, sie ist allerdings auch
-        ein wenig gefährlich. Das Hauptproblem ist, dass wir nicht
-        klar unterscheiden zwischen <quote>ich habe diese Änderung
-        bereits</quote> und <quote>ich habe diese Änderung nicht, aber
-        ich will sie jetzt nicht</quote>. Wir belügen das System
-        gewissermaßen, indem wir es glauben lassen, dass die Änderung
-        schon eingearbeitet sei. Das schiebt die Verantwortung, sich
-        daran zu erinnern, dass die Änderung tatsächlich gar nicht
-        übernommen wurde sondern nicht gewünscht war, auf Sie –
-        den Benutzer. Es gibt keine Möglichkeit, Subversion nach einer
-        Liste <quote>blockierter Änderungen</quote> zu fragen. Wenn
-        Sie sie verfolgen möchten (so dass Sie eines Tages die
-        Blockierung aufheben können) müssen Sie sie irgendwo in eine
-        Textdatei schreiben oder in einer erfundenen Eigenschaft
-        festhalten.</para>
+      <para>Das Blockieren von Änderungen mit
+        <option>--record-only</option> funktioniert zwar, es ist
+        allerdings auch ein wenig gefährlich. Das Hauptproblem ist,
+        dass wir nicht klar unterscheiden zwischen <quote>ich habe
+        diese Änderung bereits</quote> und <quote>ich habe diese
+        Änderung nicht, aber ich will sie jetzt nicht</quote>. Wir
+        belügen das System gewissermaßen, indem wir es glauben lassen,
+        dass die Änderung schon eingearbeitet sei. Das schiebt die
+        Verantwortung, sich daran zu erinnern, dass die Änderung
+        tatsächlich gar nicht übernommen wurde sondern nicht gewünscht
+        war, auf Sie – den Benutzer. Es gibt keine Möglichkeit,
+        Subversion nach einer Liste <quote>blockierter
+        Änderungen</quote> zu fragen. Wenn Sie sie verfolgen möchten
+        (so dass Sie eines Tages die Blockierung aufheben können)
+        müssen Sie sie irgendwo in eine Textdatei schreiben oder in
+        einer erfundenen Eigenschaft festhalten.</para>

      </sect2>



More information about the svnbook-dev mailing list