<?xml version="1.0" encoding="UTF-8"?>
<appendix id="svn-ap-b">
  <title>Перенос существующего CVS репозитория</title>

    <simplesect>
    <para>Поскольку система Subversion нацелена на то, чтобы заменить
      CVS, имеет смысл предоставить средства для осуществления такой
      процедуры. В состав Subversion входит скрипт, переносящий данные
      из репозитория CVS в репозиторий Subversion. Да, Вы действительно
      <emphasis>можете</emphasis> забрать свою CVS-историю в новую систему.</para>
  </simplesect>

  <sect1 id="svn-ap-b-sect-1">
    <title>Что для этого требуется</title>

    <para>Инструмент для преобразования называется <filename>
      cvs2svn.py</filename> , и это ни что иное, как скрипт написанный на
      языке python. Он находится в дереве исходных текстов системы
      Subversion, в подкаталоге <filename>tools</filename>. Для
      запуска программы Вам понадобятся некоторые дополнительные
      пакеты:</para>
    
    <variablelist>
      
      <varlistentry>
        <term>python 2.0</term>
        
        <listitem><para>Вам обязательно потребуется дистрибутив языка
          python версии 2.0 или более поздней. Последнюю версию можно
          свободно получить на сайте <systemitem
          class="url">http://www.python.org/</systemitem>.
          </para></listitem>
      </varlistentry>
      
      <varlistentry>
        <term><filename>rcsparse.py</filename></term> 
        
        <listitem><para>Это модуль языка python для обработки RCS-файлов,
          он является частью проекта ViewCVS. Необходим для чтения
          Вашего CVS репозитория. Копия этого модуля для удобства
          поставляется в той же директории, что и <filename>cvs2svn.py
          </filename>, хотя может быть доступна более свежая версия на сайте проекта
          ViewCVS &mdash; <systemitem class="url">http://viewcvs.sf.net/.
          </systemitem>. Просто поместите этот модуль туда, где python
          сможет его найти - например в директорию
          <filename>/usr/local/lib/python2.2/</filename>.</para></listitem>
      </varlistentry>
      
      <varlistentry>
        <term>привязки python к svn</term> 
        
        <listitem><para>Должны быть установлены созданные SWIG привязки
          к библиотекам Subversion для языка python. В частности, программе
          <filename>cvs2svn.py</filename> нужно делать обращения
          к библиотеке <filename>libsvn_fs</filename> для того, чтобы она
          могла помещать данные в репозиторий Subversion. (См. <xref
          linkend="svn-ch-7-sect-2.3"/>.) </para></listitem>
      </varlistentry>
      
    </variablelist>
  
  </sect1>
  
  <sect1 id="svn-ap-b-sect-2">
    <title>Запускаем программу cvs2svn.py</title>
    
    <para>Поскольку в системе CVS нет атомарных фиксаций изменений,
      <filename>cvs2svn.py</filename> проделывает сложную работу по
      их определению.
      Этот процесс проделывается с помощью анализа RCS файлов и поиска
      в них изменений с одинаковыми комментариями. Если два изменения
      имеют одинаковый комментарий и были осуществлены примерно в одно и
      то же время (в течение нескольких минут), программа
      <filename>cvs2svn.py</filename> группирует их и помещает в
      создаваемый Subversion репозиторий в составе одной редакции.</para>
    
    <para>Приведённое описание является сильным упрощением; на самом
      деле осуществляется множество самых разнообразных операций.
      <filename>cvs2svn.py</filename> осуществляет обработку в несколько
      <quote>проходов</quote>, создавая большие объёмы временных данных
      на диске. Если Вы прервёте выполнение скрипта, то при следующем
      запуске можете указать ключ <option>-p</option>, определяющий,
      начиная с какого прохода следует возобновить выполнение.</para>

    <para>Процедура вызова скрипта очень проста:</para>
    
    <screen>
$ svnadmin create /new/svn/repos
$ cvs2svn.py -s /new/svn/repos /cvs/repos
&hellip;
    </screen>

    <para>Преобразование может занять от нескольких минут до нескольких
      часов, в зависимости от размера Вашего CVS репозитория. В качестве
      примера, обработка CVS репозитория проекта Subversion (архивы
      первого года разработки, когда управление исходными текстами ещё не
      осуществлялось с помощью самой Subversion) занимает порядка 30 минут
      и приводит к появлению порядка 3000 редакций во вновь созданном 
      репозитории Subversion.</para>

  </sect1>

</appendix>

<!-- local variables: sgml-parent-document: ("book.xml" "appendix")
end: -->
