[svnbook commit] r1628 - trunk/src/ru/book

dmitriy svnbook-dev at red-bean.com
Sat Aug 20 01:53:00 CDT 2005


Author: dmitriy
Date: Sat Aug 20 01:52:59 2005
New Revision: 1628

Modified:
   trunk/src/ru/book/ch04.xml
Log:
* ru/book/ch04.xml
  Finished 'svn.branchmerge.copychanges.bestprac' and started
  'svn.branchmerge.commonuses'


Modified: trunk/src/ru/book/ch04.xml
==============================================================================
--- trunk/src/ru/book/ch04.xml	(original)
+++ trunk/src/ru/book/ch04.xml	Sat Aug 20 01:52:59 2005
@@ -1521,7 +1521,7 @@
         <para>У каждого найдется свое, немного отличающееся
           определение <quote>набора изменений</quote>, или во всяком
           случая того, что это должно означать применительно к системе
-          управления версиями с <quote>поддерживающей наборы
+          управления версиями <quote>поддерживающей наборы
           изменений</quote>. Для нашего случая будем считать, что
           набор изменений это просто модификации объединенные под
           уникальным именем. Изменения могут заключаться в редактировании
@@ -1556,7 +1556,7 @@
           полный патч того, что было зафиксировано. В этом смысле,
           о <quote>правке N</quote> можно думать не как о дереве
           файлов, а как о наборе изменений. Если вы пользуетесь
-          системой отслеживания релизов для управления ошибоками,
+          системой отслеживания релизов для управления ошибками,
           вы можете использовать номера правок для того, что бы
           ссылаться на конкретные патчи, которые исправляют
           ошибку — например, <quote>этот релиз был исправлен
@@ -1919,6 +1919,16 @@
         законено и теперь вы хотите объединить все изменения из своей
         ветки с главной линией разработки.</para>
 
+      <para>Как же в этом случае нужно ипользовать <command>svn
+        merge</command>? Помните о том, что эта команда сравнивнивает
+        два дерева и применяет различия к рабочей копии. По-этому,
+        для того, что бы было к чему применять изменения, необходимо
+        иметь рабочую копию главной линии разработки. Будем считать,
+        что либо у вас под рукой имеется такая (полностью обновленная)
+        копия, либо вы только что создали новую рабочую копию
+        <filename>/calc/trunk</filename>.</para>
+
+      <!-- @ENGLISH {{{
       <para>But which two trees should be compared?  At first glance,
         the answer may seem obvious: just compare the latest trunk
         tree with your latest branch tree.  But beware—this
@@ -1940,20 +1950,56 @@
         compare revisions 341 and <literal>HEAD</literal> of your
         branch directory, and apply those differences to a working
         copy of the trunk.</para>
+      @ENGLISH }}} -->
+      <para>А какие именно два дерева должны сравниваться? На первый
+        взгляд ответ очевиден: сравнивать последнее дерево главной
+        линии разработки с последним деревом вашей ветки. Однако
+        будьте осторожны — такое предположение является
+        <emphasis>ошибочным</emphasis>, многие новые пользователи
+        ошибаются подобным образом! Учитывая то, что <command>svn
+        merge</command> работает так же как <command>svn diff</command>,
+        сравнение последние версии главной линии разработки и вашей ветки
+        покажет изменения сделанные <emphasis>не</emphasis> только в вашей
+        ветке. Такое сравнение покажет слишком много изменений: будут
+        показано не только то, что добавлялялось в вашей ветке,
+        но и то, что <emphasis>удалялось</emphasis> в главной линии
+        разработки и не удалялось в вашей ветке.</para>
+
+      <para>Для выделения только тех изменений, которые были сделаны
+        в вашей ветке, нужно сравнивать начальное и конечное состояния
+        ветки. Воспользовавшись <command>svn log</command> для ветки,
+        можно узнать, что она была создана в правке 341. А для определения
+        конечного состояния ветки можно просто использовать правку
+        <literal>HEAD</literal>. Это значит, что вам нужно сравнить
+        правки 341 и <literal>HEAD</literal> директории с веткой и применить
+        различия к рабочей копии главной линии разработки.</para>
 
+      <!-- @ENGLISH {{{
       <tip>
         <para>A nice way of finding the revision in which a branch was
           created (the <quote>base</quote> of the branch) is to use the
-          <option>--stop-on-copy</option> option to <command>svn
+          <option>-ﳢ-stop-on-copy</option> option to <command>svn
           log</command>.  The log subcommand will normally show every
           change ever made to the branch, including tracing back
           through the copy which created the branch.  So normally,
           you'll see history from the trunk as well.  The
-          <option>--stop-on-copy</option> will halt log output as soon
+          <option>-ﳢ-stop-on-copy</option> will halt log output as soon
           as <command>svn log</command> detects that its target was
           copied or renamed.</para>
 
         <para>So in our continuing example,</para>
+      @ENGLISH }}} -->
+      <tip>
+        <para>Удобно для определения правки, в которой ветка была создана
+          (<quote>базовой</quote> правки ветки) использовать парметр
+          <option>--stop-on-copy</option> при запуске <command>svn
+          log</command>. При обычном запуске, эта команда показывает
+          все изменения сделанные в ветке, включаяя те, которые были
+          сделанны до создания ветки. По-этому, при таком запуске
+          вы увидите и историю главной линии разработки. Параметр
+          <option>--stop-on-copy</option> остановит вывод лог сообщений
+          как только <command>svn log</command> определит, что
+          целевой объект был скопирован или переименован.</para>
 
 <screen>
 $ svn log --verbose --stop-on-copy \
@@ -1967,13 +2013,22 @@
 $
 </screen>
 
+      <!-- @ENGLISH {{{
         <para>As expected, the final revision printed by this command
           is the revision in which <filename>my-calc-branch</filename>
           was created by copying.</para>
       </tip>
+      @ENGLISH }}} -->
+        <para>Как и ожидалось, последняя правка выведенная этой командой
+          будет правка, в которой директория
+          <filename>my-calc-branch</filename> была создана
+          путем копированием.</para>
+      </tip>
 
-
+      <!-- @ENGLISH {{{
       <para>Here's the final merging procedure, then:</para>
+      @ENGLISH }}} -->
+      <para>Вот так выглядит завершение объединения:</para>
 
 <screen>
 $ cd calc/trunk
@@ -2000,6 +2055,7 @@
 Committed revision 406.
 </screen>
 
+      <!-- @ENGLISH {{{
       <para>Again, notice that the commit log message very
         specifically mentions the range of changes that was merged
         into the trunk.  Always remember to do this, because it's
@@ -2019,6 +2075,28 @@
       <para>The first step is to run <command>svn log</command> on the
         trunk, and look for a log message about the last time you
         merged from the branch:</para>
+      @ENGLISH }}} -->
+      <para>Еще раз обратите внимание, на то, что в лог сообщении
+        фиксации очень точно указан диапазон правок, которые были
+        объединены с главной линией разработки. Никогда не забывайте
+        этого делать, потому что это очень важная информация, которая
+        понадобиться вам позже.</para>
+
+      <para>Например, предположим, что на следующей неделе вы решите
+        продолжить работу над веткой, для завершения расширения
+        функциональности или исправления ошибки. После этого, правка
+        <literal>HEAD</literal> хранилища будет имеет номер 480 и вы готовы
+        выполнить еще одно объединение своей личной копии с главной линией
+        разработки. Однако, как уже было сказано в разделе
+        <xref linkend= "svn.branchmerge.copychanges.bestprac"/>, нет
+        необходимости объединять изменения которые уже были объеденены
+        раньше; нужно объединить только <quote>новые</quote> изменения,
+        появившиеся с момента последнего объединения. Сложность в том,
+        что бы выделить эти новые изменения.</para>
+
+      <para>Первым шагом является запуск <command>svn log</command>
+        для главной линии разработки, для того, что бы увидеть
+        сообщение о времени последнего объединения с веткой:</para>
 
       <screen>
 $ cd calc/trunk
@@ -2032,11 +2110,18 @@
 …
 </screen>
 
+      <!-- @ENGLISH {{{
       <para>Aha!  Since all branch-changes that happened between
         revisions 341 and 405 were previously merged to the trunk as
         revision 406, you now know that you want to merge only the
         branch changes after that—by comparing revisions 406 and
         <literal>HEAD</literal>.</para>
+      @ENGLISH }}} -->
+      <para>Ага! Так как все изменения в ветке, которые делались между
+        правками 341 и 405 уже были объеденены с главной линией разработки
+        в правке 406, то теперь вы знаете, что необходимо брать только те
+        изменения ветки, которые были выполнены после этого —
+        сравнивая правки 406 и <literal>HEAD</literal>.</para>
 
 <screen>
 $ cd calc/trunk
@@ -2058,16 +2143,24 @@
 Committed revision 481.
 </screen>
 
+      <!-- @ENGLISH {{{
       <para>Now the trunk contains the complete second wave of changes
         made to the branch.  At this point, you can either delete your
         branch (we'll discuss this later on), or continue working on
         your branch and repeat this procedure for subsequent
         merges.</para>
+      @ENGLISH }}} -->
+      <para>Теперь главная линия разработки полностью содержит вторую
+        волну изменений, сделанных в ветке. С этого момента можно
+        либо удалить ветку (об ътом мы поговорим позже), либо
+        продолжать работать над веткой, с последующим объединением
+        изменений.</para>
 
     </sect2>
 
     <!-- =============================================================== -->
     <sect2 id="svn.branchmerge.commonuses.undo">
+      <!-- @ENGLISH {{{
       <title>Undoing Changes</title>
 
       <para>Another common use for <command>svn merge</command> is to
@@ -2081,6 +2174,20 @@
         working copy, and then commit the local modification to the
         repository.  All you need to do is to specify a
         <emphasis>reverse</emphasis> difference:</para>
+      @ENGLISH }}} -->
+      <title>Отмена изменений</title>
+
+      <para>Еще одним типичным применением для <command>svn
+        merge</command> является откат изменений, которые уже были
+        зафиксированы. Предположим вы спокойно работаете в рабочей
+        копии <filename>/calc/trunk</filename> и выясняете, что
+        изменения сделанные в правке 303, которые изменили
+        <filename>integer.c</filename>, полность ошибочны. Вы можете
+        воспользоваться командой <command>svn merge</command> для
+        <quote>отмены</quote> изменений в своей рабочей копии,
+        после чего зафиксировать локальные изменения в хранилище.
+        Все, что нужно сделать, это указать
+        <emphasis>обратные</emphasis> отличия:</para>
 
 
 <screen>
@@ -2101,6 +2208,7 @@
 Committed revision 350.
 </screen>
 
+      <!-- @ENGLISH {{{
       <para>One way to think about a repository revision is as a
         specific group of changes (some version control systems call
         these <firstterm>changesets</firstterm>).  By using the
@@ -2119,6 +2227,27 @@
         to send the final version to the repository.  After
         committing, this particular changeset is no longer reflected
         in the <literal>HEAD</literal> revision.</para>
+      @ENGLISH }}} -->
+      <para>Одним из взглядов на правку хранилища является представление
+        ее в виде сгруппированных изменений (некоторые системы управления
+        версиями называют это <firstterm>набором изменений</firstterm>).
+        Используя параметр <option>-r</option> можно попросить
+        <command>svn merge</command> применить к рабочей копии набор
+        изменений или целый диапазон наборов изменений. В нашем случае
+        с отменой изменений, мы просим <command>svn merge</command>
+        применить к рабочей копии набор изменений #303
+        <emphasis>в обратном направлении</emphasis>.</para>
+
+      <para>Обратите внимание, что откат изменений подобным образом
+        ничем не отличается от любых других операций, выполненых с
+        помощью <command>svn merge</command>, по-этому необходимо
+        использовать <command>svn status</command> и <command>svn
+         diff</command> для того, что бы убедится, что ваша
+         работа находится в том состоянии в котором вам нужно, а затем
+         используя <command>svn commit</command> отправить финальную
+         версию в хранилище. После фиксации, этот конкретный набор
+         изменений больше не будет отражен в правке
+         <literal>HEAD</literal>.</para>
 
       <para>Again, you may be thinking: well, that really didn't undo
         the commit, did it?  The change still exists in revision 303.



More information about the svnbook-dev mailing list