Sophie

Sophie

distrib > Mageia > 7 > i586 > media > core-release > by-pkgid > 4d3e035d9e975b827326563d291f989a > files > 3587

bzr-2.7.0-6.mga7.i586.rpm


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="ru">
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Учебник Bazaar &#8212; Документация Bazaar 2.7.0</title>
    <link rel="stylesheet" href="../_static/classic.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    
    <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/underscore.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <script type="text/javascript" src="../_static/language_data.js"></script>
    <script type="text/javascript" src="../_static/translations.js"></script>
    
    <link rel="shortcut icon" href="../_static/bzr.ico"/>
    <link rel="search" title="Поиск" href="../search.html" />
    <link rel="next" title="1   Использование Bazaar с Launchpad" href="using_bazaar_with_launchpad.html" />
    <link rel="prev" title="Bazaar за пять минут" href="../mini-tutorial/index.html" /> 
  </head><body>
    <div class="related" role="navigation" aria-label="related navigation">
      <h3>Навигация</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="using_bazaar_with_launchpad.html" title="1   Использование Bazaar с Launchpad"
             accesskey="N">вперёд</a></li>
        <li class="right" >
          <a href="../mini-tutorial/index.html" title="Bazaar за пять минут"
             accesskey="P">назад</a> |</li>
<li><a href="http://bazaar.canonical.com/">
    <img src="../_static/bzr icon 16.png" /> Главная</a>&nbsp;|&nbsp;</li>
<a href="http://doc.bazaar.canonical.com/ru/">Документация</a>&nbsp;|&nbsp;</li>

        <li class="nav-item nav-item-0"><a href="../index.html">Содержание (2.7.0)</a> &#187;</li>
 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body" role="main">
            
  <div class="section" id="bazaar">
<h1>Учебник Bazaar<a class="headerlink" href="#bazaar" title="Ссылка на этот заголовок">¶</a></h1>
<p>Текущая версия для bzr-0.91, 2007-08</p>
<div class="section" id="id1">
<h2>Введение<a class="headerlink" href="#id1" title="Ссылка на этот заголовок">¶</a></h2>
<p>Если вы уже знакомы с распределенными системами контроля версий, то можете
сразу перейти к «Представляемся Bazaar». Если, с другой стороны, вы знакомы с
системами контроля версий, но не знакомы с распределенными системами, тогда
стоит начать с «Чем отличаются распределенные системы». Иначе, возьмите кофе
или чай, расположитесь поудобнее и продолжим чтение.</p>
</div>
<div class="section" id="id2">
<h2>Назначение контроля версий<a class="headerlink" href="#id2" title="Ссылка на этот заголовок">¶</a></h2>
<p>Есть шансы, что вы уже работали с какими-либо текстовыми данными – исходниками
программ, Web-сайтами, или конфигурационными файлами с которыми имеют дело
администраторы систем Unix в /etc. Также есть хорошие шансы, что вы делали
ошибки, которые вызывали потом глубокое сожаление. Возможно вы удалили
конфигурационный файл для вашего почтового сервера, или повредили исходный код
любимого проекта. Не важно что конкретно случилось, но вы просто удалили важную
информацию которую вы безнадежно хотели бы вернуть. Если такое когда либо
случалось с вами, то вы возможно готовы для Bazaar.</p>
<p>Системы контроля версий, такие как Bazaar дают возможность отслеживать
изменения для каталога, который они изменяют в нечто более сложное, что
называется <strong>ветка</strong>. Ветка не только сохраняет то как каталог выглядит в
данный момент, но также как он выглядел в различные моменты в прошлом. Затем,
когда вы сделаете что-то, что бы вы не хотели делать, вы сможете восстановить
каталог в том виде как он выглядел в какой-то момент в прошлом.</p>
<p>Системы контроля версий дают пользователям возможность сохранять изменения на
ветке «фиксируя <strong>ревизию</strong>». Созданная ревизия фактически является сводкой
изменений, которые были сделаны с последнего момента когда дерево было
сохранено.</p>
<p>Эти ревизии имеют также и другое назначение. Например, можно комментировать
ревизии, записав, что значит данный набор изменений, через необязательную
запись в журнале. Реальные записи в журнале могут быть похожи на «Исправлен
Web-шаблон для закрытия таблицы» и «Добавлена поддержка SFTP. Исправлен #595»</p>
<p>Мы храним этот журнал, что бы позже, в случае каких-либо проблем с SFTP, можно
было определить когда могла произойти проблема.</p>
<div class="section" id="id3">
<h3>Чем отличаются распределенные системы<a class="headerlink" href="#id3" title="Ссылка на этот заголовок">¶</a></h3>
<p>Многие системы контроля версий хранят данные на серверах. Если кто-то хочет
работать с кодом, который хранится в системе тогда ему нужно установить
соединение с сервером и «создать рабочую копию» кода. При этом создается
каталог в котором можно менять файлы и затем фиксировать изменения. Клиент
системы затем соединяется с сервером системы и сохраняет изменения. Этот метод
известен как централизованная модель.</p>
<p>Централизованная модель может иметь некоторые недостатки. Централизованная
система требует наличия соединения с сервером для любых действий по контролю
версий. Это может быть проблематичным если сервер находится на другой машине в
интернете, а клиент - нет. Или, хуже, клиент <strong>в</strong> интернете, а сервер - нет.</p>
<p>Распределенные системы контроля версий обходят эту проблему сохраняя ветки на
той же машине на которой находится клиент. В случае с Bazaar, ветка находится в
том же самом месте, что и код хранящийся под контролем версий. Это позволяет
пользователю сохранять (<strong>фиксировать</strong>) изменения когда он захочет – даже без
сетевого подключения. Пользователю нужен доступ к интернету только когда он
хочет получить доступ к чьей-либо ветке в другом месте.</p>
<p>Общее требование, что многие люди хотят отслеживать изменения для каталога,
такие как изменения файлов и изменения в подкаталогах. Отслеживать это
«руками» ужасный процесс, который со временем становится громоздким. До тех пор
пока вы не попробуете систему контроля версий, такую как Bazaar. Такие
инструменты автоматизируют процесс сохранения данных, создавая <strong>ревизии</strong>
дерева каталога когда пользователь запрашивает сделать это.</p>
<p>Системы контроля версий, такие как Bazaar, могут делать намного больше чем
просто хранить изменения и отменять ошибочные действия. Например, с помощью
Bazaar разработчики могут взять изменения кода на одной ветке и объединить их
со связанной веткой – даже если эти изменения хранятся на ветке которую создал
кто-то другой. Это позволяет разработчикам сотрудничать без необходимости
открывать доступ на запись к репозиторию.</p>
<p>Bazaar помнит „“предков““ ревизии: предыдущие ревизии на которых основана
текущая ревизия. Одна ревизия может иметь больше одного прямого потомка, каждый
из которых со своими изменениями, что представляет дивергенцию в эволюции
дерева. Создание веток в Bazaar позволяет нескольким людям сотрудничать в
эволюции проекта, без необходимости работать жестко по шагам. Создание веток
может быть полезным даже для одного разработчика.</p>
</div>
</div>
<div class="section" id="id4">
<h2>Представляемся Bazaar<a class="headerlink" href="#id4" title="Ссылка на этот заголовок">¶</a></h2>
<p>Bazaar устанавливает единственную новую команду, <strong>bzr</strong>. Все возможности
предоставляются через под-команды этой команды. Вы можете просмотреть краткую
справку командой <code class="docutils literal notranslate"><span class="pre">bzr</span> <span class="pre">help</span></code>. Некоторые идеи группируются по темам,
используйте <code class="docutils literal notranslate"><span class="pre">bzr</span> <span class="pre">help</span> <span class="pre">topics</span></code> для списка доступных тем.</p>
<p>Одна из функций системы контроля версий – отслеживать кто сделал изменения. В
распределенных системах для этого требуется идентифицировать каждого автора
уникально в глобальном плане. Большинство людей уже имеют такой идентификатор:
email адрес. Bazaar достаточно умен, что бы автоматически создавать email адрес
из текущего имени и адреса хоста. Если вам не нравится предположение которое
делает Bazaar вы сможете выбрать из трех опций:</p>
<blockquote>
<div><ol class="arabic">
<li><p class="first">Установить email адрес через <code class="docutils literal notranslate"><span class="pre">bzr</span> <span class="pre">whoami</span></code>. Это наиболее простой путь.</p>
<p>Что бы установить такой глобальный идентификатор, используйте:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">%</span> <span class="n">bzr</span> <span class="n">whoami</span> <span class="s2">&quot;Ваше Имя &lt;email@example.com&gt;&quot;</span>
</pre></div>
</div>
<p>Если вы хотите использовать разные адреса для разных веток, то зайдите
в каталог с веткой и используйте:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">%</span> <span class="n">bzr</span> <span class="n">whoami</span> <span class="o">--</span><span class="n">branch</span> <span class="s2">&quot;Ваше Имя &lt;email@example.com&gt;&quot;</span>
</pre></div>
</div>
</li>
<li><p class="first">Установить email адрес в <code class="docutils literal notranslate"><span class="pre">~/.bazaar/bazaar.conf</span></code> <a class="footnote-reference" href="#id6" id="id5">[1]</a>, добавив следующие
строчки. Заметьте, что <code class="docutils literal notranslate"><span class="pre">[DEFAULT]</span></code> зависит от регистра символов:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">DEFAULT</span><span class="p">]</span>
<span class="n">email</span><span class="o">=</span><span class="n">Ваше</span> <span class="n">Имя</span> <span class="o">&lt;</span><span class="n">email</span><span class="nd">@isp</span><span class="o">.</span><span class="n">com</span><span class="o">&gt;</span>
</pre></div>
</div>
<p>Как и выше вы можете переопределить эти установки для каждой ветки
создав секцию для ветки в <code class="docutils literal notranslate"><span class="pre">~/.bazaar/locations.conf</span></code> и добавив
следующие строчки:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="o">/</span><span class="n">путь</span><span class="o">/</span><span class="n">к</span><span class="o">/</span><span class="n">ветке</span><span class="p">]</span>
<span class="n">email</span><span class="o">=</span><span class="n">Ваше</span> <span class="n">Имя</span> <span class="o">&lt;</span><span class="n">email</span><span class="nd">@isp</span><span class="o">.</span><span class="n">com</span><span class="o">&gt;</span>
</pre></div>
</div>
</li>
<li><p class="first">Переопределить два предыдущих способа, установив ваш полный email адрес в
глобальную переменную среды <code class="docutils literal notranslate"><span class="pre">$BZR_EMAIL</span></code>, или <code class="docutils literal notranslate"><span class="pre">$EMAIL</span></code> (<code class="docutils literal notranslate"><span class="pre">$BZR_EMAIL</span></code>
имеет больший приоритет).</p>
</li>
</ol>
</div></blockquote>
<table class="docutils footnote" frame="void" id="id6" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label">[1]</td><td><em>(<a class="fn-backref" href="#id5">1</a>, <a class="fn-backref" href="#id18">2</a>)</em> Для Windows пользовательские файлы конфигурации могут быть найдены в
каталоге с данными приложений. Таким образом вместо
<code class="docutils literal notranslate"><span class="pre">~/.bazaar/branch.conf</span></code> конфигурация может быть найдена в:
<code class="docutils literal notranslate"><span class="pre">C:\Documents</span> <span class="pre">and</span> <span class="pre">Settings\&lt;пользователь&gt;\Application</span> <span class="pre">Data\Bazaar\2.0\branch.conf</span></code>. Там же могут
быть найдены <code class="docutils literal notranslate"><span class="pre">locations.conf</span></code>, <code class="docutils literal notranslate"><span class="pre">ignore</span></code> и каталог <code class="docutils literal notranslate"><span class="pre">plugins</span></code>.</td></tr>
</tbody>
</table>
</div>
<div class="section" id="id7">
<h2>Создаем ветку<a class="headerlink" href="#id7" title="Ссылка на этот заголовок">¶</a></h2>
<p>История по-умолчанию хранится на ветке в каталоге .bzr. В будущих версиях
Bazaar будут средства для хранения истории в отдельном репозитории, который
также сможет быть удаленным.</p>
<p>Мы создаем новую ветку выполнив <code class="docutils literal notranslate"><span class="pre">bzr</span> <span class="pre">init</span></code> в уже созданном каталоге:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">%</span> <span class="n">mkdir</span> <span class="n">tutorial</span>
<span class="o">%</span> <span class="n">cd</span> <span class="n">tutorial</span>
<span class="o">%</span> <span class="n">ls</span> <span class="o">-</span><span class="n">a</span>
<span class="o">./</span>  <span class="o">../</span>
<span class="o">%</span> <span class="n">pwd</span>
<span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">mbp</span><span class="o">/</span><span class="n">work</span><span class="o">/</span><span class="n">bzr</span><span class="o">.</span><span class="n">test</span><span class="o">/</span><span class="n">tutorial</span>
<span class="o">%</span>
<span class="o">%</span> <span class="n">bzr</span> <span class="n">init</span>
<span class="o">%</span> <span class="n">ls</span> <span class="o">-</span><span class="n">aF</span>
<span class="o">./</span>  <span class="o">../</span>  <span class="o">.</span><span class="n">bzr</span><span class="o">/</span>
<span class="o">%</span>
</pre></div>
</div>
<p>Как и в CVS здесь три класса файлов: неизвестные, игнорируемые и под контролем
версий. Команда <strong>add</strong> ставит файл под контроль версий, т.е. изменения в нем
будут записываться системой:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">%</span> <span class="n">echo</span> <span class="s1">&#39;hello world&#39;</span> <span class="o">&gt;</span> <span class="n">hello</span><span class="o">.</span><span class="n">txt</span>
<span class="o">%</span> <span class="n">bzr</span> <span class="n">status</span>
<span class="n">unknown</span><span class="p">:</span>
  <span class="n">hello</span><span class="o">.</span><span class="n">txt</span>
<span class="o">%</span> <span class="n">bzr</span> <span class="n">add</span> <span class="n">hello</span><span class="o">.</span><span class="n">txt</span>
<span class="n">added</span> <span class="n">hello</span><span class="o">.</span><span class="n">txt</span>
<span class="o">%</span> <span class="n">bzr</span> <span class="n">status</span>
<span class="n">added</span><span class="p">:</span>
  <span class="n">hello</span><span class="o">.</span><span class="n">txt</span>
</pre></div>
</div>
<p>Если вы добавили не тот файл просто сделайте <code class="docutils literal notranslate"><span class="pre">bzr</span> <span class="pre">remove</span></code>, что бы сделать его
опять неизвестным. Рабочая копия файла не будет удалена в этом случае, хотя она
может быть удалена в других случаях <a class="footnote-reference" href="#id9" id="id8">[2]</a>.</p>
<table class="docutils footnote" frame="void" id="id9" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label">[2]</td><td><em>(<a class="fn-backref" href="#id8">1</a>, <a class="fn-backref" href="#id23">2</a>)</em> <code class="docutils literal notranslate"><span class="pre">bzr</span> <span class="pre">remove</span></code> удалит рабочую копию если она находится под контролем
версий, но не имеет изменений с последней зафиксированной версии. Вы
можете оставить файл указав опцию <code class="docutils literal notranslate"><span class="pre">--keep</span></code> для <code class="docutils literal notranslate"><span class="pre">bzr</span> <span class="pre">remove</span></code>, или
удалить с опцией <code class="docutils literal notranslate"><span class="pre">--force</span></code>.</td></tr>
</tbody>
</table>
</div>
<div class="section" id="id10">
<h2>Размещение веток<a class="headerlink" href="#id10" title="Ссылка на этот заголовок">¶</a></h2>
<p>Вся история хранится на ветке, которая является всего лишь каталогом на диске
содержащим файлы управления. По-умолчанию здесь нет отдельного репозитория, или
базы данных как в svn, или svk. По желанию вы можете создать репозиторий (см.
команду <code class="docutils literal notranslate"><span class="pre">bzr</span> <span class="pre">init-repo</span></code>). Это можно сделать в случае очень больших веток, или
большого количества веток для проекта среднего размера.</p>
<p>Мы обычно обращаемся к веткам на нашем компьютере просто передав имя каталога
содержащего ветку. bzr также поддерживает доступ к веткам через HTTP и SFTP,
например:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">%</span> <span class="n">bzr</span> <span class="n">log</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">bazaar</span><span class="o">.</span><span class="n">launchpad</span><span class="o">.</span><span class="n">net</span><span class="o">/~</span><span class="n">bzr</span><span class="o">-</span><span class="n">pqm</span><span class="o">/</span><span class="n">bzr</span><span class="o">/</span><span class="n">bzr</span><span class="o">.</span><span class="n">dev</span><span class="o">/</span>
<span class="o">%</span> <span class="n">bzr</span> <span class="n">log</span> <span class="n">sftp</span><span class="p">:</span><span class="o">//</span><span class="n">bazaar</span><span class="o">.</span><span class="n">launchpad</span><span class="o">.</span><span class="n">net</span><span class="o">/~</span><span class="n">bzr</span><span class="o">-</span><span class="n">pqm</span><span class="o">/</span><span class="n">bzr</span><span class="o">/</span><span class="n">bzr</span><span class="o">.</span><span class="n">dev</span><span class="o">/</span>
</pre></div>
</div>
<p>Установив для bzr плагины можно также осуществлять доступ к веткам с
использованием rsync.</p>
<p>Смотрите секцию <a class="reference internal" href="#id27">Публикация ветки</a> что бы получить больше информации о том как
поместить свою ветку в нужное место.</p>
</div>
<div class="section" id="id11">
<h2>Просмотр изменений<a class="headerlink" href="#id11" title="Ссылка на этот заголовок">¶</a></h2>
<p>Как только вы закончили свою работу, вы захотите <strong>зафиксировать</strong> ее в истории
ревизий. Хорошая практика фиксировать изменения достаточно часто: когда
заработала новая функциональность, исправлена ошибка, или улучшен код, или
документация. При этом стоит проверить, что код компилируется и проходит все
тесты перед фиксацией, что бы быть уверенным, что каждая ревизия в хорошем
состоянии. Также можно просмотреть свои изменения, для уверенности, что вы
фиксируете именно то, что хотели и получить шанс проверить свою работу перед
тем как записать ее постоянно.</p>
<p>Две команды bzr особенно полезны здесь: <strong>status</strong> и <strong>diff</strong>.</p>
<div class="section" id="bzr-status">
<h3>bzr status<a class="headerlink" href="#bzr-status" title="Ссылка на этот заголовок">¶</a></h3>
<p>Команда <strong>status</strong> показывает какие изменения были сделаны в рабочем каталоге
с момента последней ревизии:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">%</span> <span class="n">bzr</span> <span class="n">status</span>
<span class="n">modified</span><span class="p">:</span>
   <span class="n">foo</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">bzr</span> <span class="pre">status</span></code> скрывает «неинтересные» файлы которые, либо не менялись, либо
игнорируются. Также команде status могут быть переданы необязательные имена
файлов, или каталогов для проверки.</p>
</div>
<div class="section" id="bzr-diff">
<h3>bzr diff<a class="headerlink" href="#bzr-diff" title="Ссылка на этот заголовок">¶</a></h3>
<p>Команда <strong>diff</strong> показывает изменения в тексте файлов в стандартном формате
diff. Вывод этой команды может быть передан другим командам, таким как
„“patch“„, „“diffstat“„, „“filterdiff““ и „“colordiff“„:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">%</span> <span class="n">bzr</span> <span class="n">diff</span>
<span class="o">===</span> <span class="n">added</span> <span class="n">file</span> <span class="s1">&#39;hello.txt&#39;</span>
<span class="o">---</span> <span class="n">hello</span><span class="o">.</span><span class="n">txt</span>   <span class="mi">1970</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">01</span> <span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span> <span class="o">+</span><span class="mi">0000</span>
<span class="o">+++</span> <span class="n">hello</span><span class="o">.</span><span class="n">txt</span>   <span class="mi">2005</span><span class="o">-</span><span class="mi">10</span><span class="o">-</span><span class="mi">18</span> <span class="mi">14</span><span class="p">:</span><span class="mi">23</span><span class="p">:</span><span class="mi">29</span> <span class="o">+</span><span class="mi">0000</span>
<span class="o">@@</span> <span class="o">-</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span> <span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span> <span class="o">@@</span>
<span class="o">+</span><span class="n">hello</span> <span class="n">world</span>
</pre></div>
</div>
<p>С опцией <code class="docutils literal notranslate"><span class="pre">-r</span></code> дерево файлов сравнивается с ранней ревизией, или показываются
изменения между двумя ревизиями:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">%</span> <span class="n">bzr</span> <span class="n">diff</span> <span class="o">-</span><span class="n">r</span> <span class="mf">1000.</span><span class="o">.</span>          <span class="c1"># изменения начиная с r1000</span>
<span class="o">%</span> <span class="n">bzr</span> <span class="n">diff</span> <span class="o">-</span><span class="n">r</span> <span class="mf">1000.</span><span class="o">.</span><span class="mi">1100</span>      <span class="c1"># изменения c 1000 до 1100</span>
</pre></div>
</div>
<p>Опция <code class="docutils literal notranslate"><span class="pre">--diff-options</span></code> говорит bzr запустить внешнюю программу diff, передав
ей опции. Например:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">%</span> <span class="n">bzr</span> <span class="n">diff</span> <span class="o">--</span><span class="n">diff</span><span class="o">-</span><span class="n">options</span> <span class="o">--</span><span class="n">side</span><span class="o">-</span><span class="n">by</span><span class="o">-</span><span class="n">side</span> <span class="n">foo</span>
</pre></div>
</div>
<p>Некоторые проекты предпочитают показывать префиксы в начале текста изменений
для старых (old) и новых (new) файлов. Опция <code class="docutils literal notranslate"><span class="pre">--prefix</span></code> может быть
использована для установки такого префикса. Плюс к этому команда <code class="docutils literal notranslate"><span class="pre">bzr</span> <span class="pre">diff</span>
<span class="pre">-p1</span></code> выводит префиксы в форме которая подходит для команды <code class="docutils literal notranslate"><span class="pre">patch</span> <span class="pre">-p1</span></code>.</p>
</div>
</div>
<div class="section" id="id12">
<h2>Фиксация изменений<a class="headerlink" href="#id12" title="Ссылка на этот заголовок">¶</a></h2>
<p>Когда состояние рабочего дерева подходит для сохранения оно может быть
<strong>зафиксировано</strong> на ветке, что создаст новую ревизию содержащую снимок
состояния дерева.</p>
<div class="section" id="bzr-commit">
<h3>bzr commit<a class="headerlink" href="#bzr-commit" title="Ссылка на этот заголовок">¶</a></h3>
<p>Команде <strong>commit</strong> можно передать сообщение описывающее изменения в ревизии.
Она также записывает идентификатор пользователя, текущее время и временную
зону, плюс список измененных файлов и их содержимого. Сообщение описывающее
изменения определяется через опцию <code class="docutils literal notranslate"><span class="pre">-m</span></code>, или <code class="docutils literal notranslate"><span class="pre">--message</span></code>. Можно также
вводить сообщения состоящие из нескольких строк; в большинстве оболочек вы
можете сделать это оставив открытую кавычку в конце строки.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">%</span> <span class="n">bzr</span> <span class="n">commit</span> <span class="o">-</span><span class="n">m</span> <span class="s2">&quot;добавлен первый файл&quot;</span>
</pre></div>
</div>
<p>Также можно использовать опцию <code class="docutils literal notranslate"><span class="pre">-F</span></code>, для получения сообщения из файла.
Некоторые люди делают заметки изменений во время работы над ними, а затем
просматривают изменения, что бы быть уверенными, что они сделали то, что хотели
сделать. (Этот файл может быть также полезен когда вы возвращаетесь к своей
работе после перерыва.)</p>
</div>
</div>
<div class="section" id="id13">
<h2>Сообщение из текстового редактора<a class="headerlink" href="#id13" title="Ссылка на этот заголовок">¶</a></h2>
<p>Если вы не используете опции <code class="docutils literal notranslate"><span class="pre">-m</span></code> и <code class="docutils literal notranslate"><span class="pre">-F</span></code> тогда bzr откроет текстовый
редактор для ввода сообщения. Какой редактор запускать может быть настроено
через переменные среды <code class="docutils literal notranslate"><span class="pre">$VISUAL</span></code>, или <code class="docutils literal notranslate"><span class="pre">$EDITOR</span></code>, которые могут быть
переопределены опцией <code class="docutils literal notranslate"><span class="pre">editor</span></code> в файле <code class="docutils literal notranslate"><span class="pre">~/.bazaar/bazaar.conf</span></code>; опция
<code class="docutils literal notranslate"><span class="pre">$BZR_EDITOR</span></code> переопределяет все описанные выше настройки. Если вы выходите
из редактора без каких-либо изменений, то фиксация будет прервана.</p>
<p>Файл который открывается в редакторе содержит горизонтальную линию. Часть файла
ниже этой линии включена только для информации и не будет частью сообщения об
изменениях. Ниже линии показывается список файлов которые были изменены. Для
создания сообщения вам надо написать свое сообщение выше линии, сохранить его и
выйти из редактора.</p>
<p>Если вы хотите увидеть изменения содержимого файлов которые будут
зафиксированы, при редактировании сообщения вам нужно указать опцию
<code class="docutils literal notranslate"><span class="pre">--show-diff</span></code> для команды <code class="docutils literal notranslate"><span class="pre">commit</span></code>. Эта опция добавит изменения в файл
который будет открыт в редакторе ниже линии и списка измененных файлов. Это
значит, что вы можете читать изменения при редактировании сообщения, но они не
будут включены в сообщение когда вы закончите редактировать. Если вы хотите,
что бы части изменений были включены в сообщение вы можете скопировать и
вставить их выше ограничительной линии.</p>
<div class="section" id="id14">
<h3>Выборочная фиксация<a class="headerlink" href="#id14" title="Ссылка на этот заголовок">¶</a></h3>
<p>Если вы передадите список имен файлов, или каталогов после команды commit, то
будут зафиксированы только изменения для переданных объектов. Например:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">%</span> <span class="n">bzr</span> <span class="n">commit</span> <span class="o">-</span><span class="n">m</span> <span class="s2">&quot;исправления документации&quot;</span> <span class="n">commit</span><span class="o">.</span><span class="n">py</span>
</pre></div>
</div>
<p>По умолчанию bzr всегда фиксирует все изменения для дерева, даже если запущен
из подкаталога. Что бы зафиксировать только изменения от текущего каталога
и ниже, используйте:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">%</span> <span class="n">bzr</span> <span class="n">commit</span> <span class="o">.</span>
</pre></div>
</div>
</div>
</div>
<div class="section" id="id15">
<h2>Удаление не зафиксированных изменений<a class="headerlink" href="#id15" title="Ссылка на этот заголовок">¶</a></h2>
<p>Если вы сделали какие-либо изменения и не хотите оставлять их, используйте
команду <strong>revert</strong>, что бы вернутся к состоянию предыдущей ревизии. Хорошая
идея, использовать сначала <code class="docutils literal notranslate"><span class="pre">bzr</span> <span class="pre">diff</span></code> для просмотра изменений. По умолчанию
команда revert отменяет изменения на всем дереве, но если ей переданы имена
файлов, или каталогов то будут затронуты только они. <code class="docutils literal notranslate"><span class="pre">bzr</span> <span class="pre">revert</span></code> также
очищает список ревизий ожидающих объединения.</p>
</div>
<div class="section" id="id16">
<h2>Игнорирование файлов<a class="headerlink" href="#id16" title="Ссылка на этот заголовок">¶</a></h2>
<p>Многие деревья с исходным кодом содержат файлы которые не нужно хранить под
контролем версий, например резервные файлы текстового редактора, объектные
файлы и собранные программы. Вы можете просто не добавлять их, но они всегда
будут обнаруживаться как неизвестные. Вы также можете сказать bzr игнорировать
их добавив их в файл <code class="docutils literal notranslate"><span class="pre">.bzrignore</span></code> в корне рабочего дерева.</p>
<p>Этот файл содержит список шаблонов файлов, по одному в каждой строчке. Обычное
содержимое может быть таким:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">*.</span><span class="n">o</span>
<span class="o">*~</span>
<span class="o">*.</span><span class="n">tmp</span>
<span class="o">*.</span><span class="n">py</span><span class="p">[</span><span class="n">co</span><span class="p">]</span>
</pre></div>
</div>
<p>Если шаблон содержит слеш, то он будет сопоставлен с полным путем начиная от
корня рабочего дерева; иначе он сопоставляется только с именем файла. Таким
образом пример выше игнорирует файлы с расширением <code class="docutils literal notranslate"><span class="pre">.o</span></code> во всех
подкаталогах, но пример ниже игнорирует только <code class="docutils literal notranslate"><span class="pre">config.h</span></code> в корне рабочего
дерева и HTML файлы в каталоге <code class="docutils literal notranslate"><span class="pre">doc/</span></code>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">./</span><span class="n">config</span><span class="o">.</span><span class="n">h</span>
<span class="n">doc</span><span class="o">/*.</span><span class="n">html</span>
</pre></div>
</div>
<p>Для получения списка файлов которые игнорируются и соответствующих им шаблонов
используйте команду <code class="docutils literal notranslate"><span class="pre">bzr</span> <span class="pre">ignored</span></code>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">%</span> <span class="n">bzr</span> <span class="n">ignored</span>
<span class="n">config</span><span class="o">.</span><span class="n">h</span>                 <span class="o">./</span><span class="n">config</span><span class="o">.</span><span class="n">h</span>
<span class="n">configure</span><span class="o">.</span><span class="ow">in</span><span class="o">~</span>            <span class="o">*~</span>
</pre></div>
</div>
<p>Нет проблем если шаблон для игнорирования подходит для файла под контролем
версий, или вы добавили файл который игнорируется. Шаблоны не имеют никакого
эффекта на файлы под контролем версий, они только определяют показываются
неизвестные файлы, или просто игнорируются.</p>
<p>Файл <code class="docutils literal notranslate"><span class="pre">.bzrignore</span></code> обычно должен быть под контролем версий, что бы новые копии
ветки видели такие же шаблоны:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">%</span> <span class="n">bzr</span> <span class="n">add</span> <span class="o">.</span><span class="n">bzrignore</span>
<span class="o">%</span> <span class="n">bzr</span> <span class="n">commit</span> <span class="o">-</span><span class="n">m</span> <span class="s2">&quot;Добавлены шаблоны для игнорирования&quot;</span>
</pre></div>
</div>
<div class="section" id="id17">
<h3>Глобальные шаблоны для игнорирования<a class="headerlink" href="#id17" title="Ссылка на этот заголовок">¶</a></h3>
<p>Обычно есть файлы которые нужно игнорировать и они не специфичны для отдельных
проектов, а скорее специфичны для пользователя. Например, временные файлы
текстового редактора, или персональные временные файлы. Вместо того, что бы
добавлять их для игнорирования в каждом проекте, bzr поддерживает глобальный
файл игнорирования <code class="docutils literal notranslate"><span class="pre">~/.bazaar/ignore</span></code> <a class="footnote-reference" href="#id6" id="id18">[1]</a>. Он имеет такой же синтаксис, что
и файл игнорирования для каждого проекта.</p>
</div>
</div>
<div class="section" id="id19">
<h2>Просмотр истории<a class="headerlink" href="#id19" title="Ссылка на этот заголовок">¶</a></h2>
<div class="section" id="bzr-log">
<h3>bzr log<a class="headerlink" href="#bzr-log" title="Ссылка на этот заголовок">¶</a></h3>
<p>Команда <code class="docutils literal notranslate"><span class="pre">bzr</span> <span class="pre">log</span></code> показывает список предыдущих ревизий. Команда <code class="docutils literal notranslate"><span class="pre">bzr</span> <span class="pre">log</span>
<span class="pre">--forward</span></code> делает тоже самое, но в хронологическом порядке, показывая более
поздние ревизии в конце.</p>
<p>Как и <code class="docutils literal notranslate"><span class="pre">bzr</span> <span class="pre">diff</span></code>, <code class="docutils literal notranslate"><span class="pre">bzr</span> <span class="pre">log</span></code> поддерживает опцию <code class="docutils literal notranslate"><span class="pre">-r</span></code>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">%</span> <span class="n">bzr</span> <span class="n">log</span> <span class="o">-</span><span class="n">r</span> <span class="mf">1000.</span><span class="o">.</span>          <span class="c1"># Ревизия 1000 и все после нее</span>
<span class="o">%</span> <span class="n">bzr</span> <span class="n">log</span> <span class="o">-</span><span class="n">r</span> <span class="o">..</span><span class="mi">1000</span>          <span class="c1"># Все до и включая r1000</span>
<span class="o">%</span> <span class="n">bzr</span> <span class="n">log</span> <span class="o">-</span><span class="n">r</span> <span class="mf">1000.</span><span class="o">.</span><span class="mi">1100</span>      <span class="c1"># изменения с 1000 до 1100</span>
<span class="o">%</span> <span class="n">bzr</span> <span class="n">log</span> <span class="o">-</span><span class="n">r</span> <span class="mi">1000</span>            <span class="c1"># Изменения только для ревизии 1000</span>
</pre></div>
</div>
</div>
</div>
<div class="section" id="id20">
<h2>Статистика ветки<a class="headerlink" href="#id20" title="Ссылка на этот заголовок">¶</a></h2>
<p>Команда <code class="docutils literal notranslate"><span class="pre">bzr</span> <span class="pre">info</span></code> показывает суммарную информацию о рабочем дереве и истории
на ветке.</p>
</div>
<div class="section" id="id21">
<h2>Каталоги под контролем версий<a class="headerlink" href="#id21" title="Ссылка на этот заголовок">¶</a></h2>
<p>bzr может контролировать файлы и каталоги, отслеживая переименования и
упрощая их последующее объединение:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">%</span> <span class="n">mkdir</span> <span class="n">src</span>
<span class="o">%</span> <span class="n">echo</span> <span class="s1">&#39;int main() </span><span class="si">{}</span><span class="s1">&#39;</span> <span class="o">&gt;</span> <span class="n">src</span><span class="o">/</span><span class="n">simple</span><span class="o">.</span><span class="n">c</span>
<span class="o">%</span> <span class="n">bzr</span> <span class="n">add</span> <span class="n">src</span>
<span class="n">added</span> <span class="n">src</span>
<span class="n">added</span> <span class="n">src</span><span class="o">/</span><span class="n">simple</span><span class="o">.</span><span class="n">c</span>
<span class="o">%</span> <span class="n">bzr</span> <span class="n">status</span>
<span class="n">added</span><span class="p">:</span>
  <span class="n">src</span><span class="o">/</span>
  <span class="n">src</span><span class="o">/</span><span class="n">simple</span><span class="o">.</span><span class="n">c</span>
</pre></div>
</div>
</div>
<div class="section" id="id22">
<h2>Удаление файлов<a class="headerlink" href="#id22" title="Ссылка на этот заголовок">¶</a></h2>
<p>Вы можете удалить файл, или каталог из под контроля версий просто удалив их
из рабочего каталога. Это немного отличается от CVS, которая требует что бы вы
также сделали <code class="docutils literal notranslate"><span class="pre">cvs</span> <span class="pre">remove</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">bzr</span> <span class="pre">remove</span></code> удаляет файл из под контроля версий, но может и не удалять
рабочую копию файла <a class="footnote-reference" href="#id9" id="id23">[2]</a>. Это удобно когда вы добавили не тот файл, или решили,
что файл на самом деле не должен быть под контролем версий.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>% rm -r src
% bzr remove -v hello.txt
?       hello.txt
% bzr status
removed:
  hello.txt
  src/
  src/simple.c
unknown:
  hello.txt
</pre></div>
</div>
<p>Если вы вдруг удалили не тот файл, то вы можете использовать <code class="docutils literal notranslate"><span class="pre">bzr</span> <span class="pre">revert</span></code> что
бы восстановить его.</p>
</div>
<div class="section" id="id24">
<h2>Ветвление<a class="headerlink" href="#id24" title="Ссылка на этот заголовок">¶</a></h2>
<p>Часто вместо того что бы начинать свой собственный проект, вы хотите предложить
изменения для уже готового проекта. Что бы сделать это вам нужно получить копию
готовой ветки. Так как эта копия может быть потенциальной новой веткой эта
команда называется <strong>branch</strong>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">%</span> <span class="n">bzr</span> <span class="n">branch</span> <span class="n">lp</span><span class="p">:</span><span class="n">bzr</span> <span class="n">bzr</span><span class="o">.</span><span class="n">dev</span>
<span class="o">%</span> <span class="n">cd</span> <span class="n">bzr</span><span class="o">.</span><span class="n">dev</span>
</pre></div>
</div>
<p>Эта команда копирует полную историю ветки и после этого вы можете делать все
операции с ней локально: просматривать журнал, создавать и объединять другие
ветки. Здесь также есть опция для получения только части истории если это
необходимо.</p>
<p>Копию другой ветки можно также получить просто скопировав ее каталог,
развернув архив, или скопировав удаленно через такую утилиту как rsync.</p>
</div>
<div class="section" id="id25">
<h2>Следование за изменениями основного проекта<a class="headerlink" href="#id25" title="Ссылка на этот заголовок">¶</a></h2>
<p>Вы можете обновлять свою ветку из родительской через получение ее изменений:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">%</span> <span class="n">bzr</span> <span class="n">pull</span>
</pre></div>
</div>
<p>После этого локальный каталог будет копией родительского. Это включает и
„“историю ревизий““ - список изменений сделанных на родительской ветке, а не
объединенных с других веток.</p>
<p>Эта команда работает только если локальная ветка, либо более старая копия
родительской ветки без новых фиксаций, либо все последние фиксации уже были
объединены с родительской веткой.</p>
</div>
<div class="section" id="id26">
<h2>Объединение со связанных веток<a class="headerlink" href="#id26" title="Ссылка на этот заголовок">¶</a></h2>
<p>Если две ветки разошлись (обе имеют уникальные изменения) тогда <code class="docutils literal notranslate"><span class="pre">bzr</span> <span class="pre">merge</span></code> -
это подходящая команда для использования. Объединение автоматически вычислит
изменения которые существуют на объединяемой ветке и отсутствуют в локальной
ветке и попытается объединить их с локальной веткой.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">%</span> <span class="n">bzr</span> <span class="n">merge</span> <span class="n">URL</span>
</pre></div>
</div>
<p>В случае конфликта при объединении будут созданы три файла с одними именем, но
разными расширениями. Файл с общими изменениями будет с расширением «.BASE»,
файл с локальными изменениями будет с расширением «.THIS» и файл с изменениями
из объединяемой ветки будет с расширением «.OTHER». Используя такую программу
как kdiff3 вы теперь сможете достаточно легко объединить их в один файл. Для
фиксации изменений вам нужно переименовать объединенный файл («.THIS») в файл с
оригинальным именем. И для завершения исправления конфликта нужно использовать
команду resolve, которая удалит файлы «.OTHER» и «.BASE». Команда commit будет
выдавать ошибку пока существует один из файлов с расширением .BASE, .THIS, или
.OTHER.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">%</span> <span class="n">kdiff3</span> <span class="n">file</span><span class="o">.</span><span class="n">BASE</span> <span class="n">file</span><span class="o">.</span><span class="n">OTHER</span> <span class="n">file</span><span class="o">.</span><span class="n">THIS</span>
<span class="o">%</span> <span class="n">mv</span> <span class="n">file</span><span class="o">.</span><span class="n">THIS</span> <span class="n">file</span>
<span class="o">%</span> <span class="n">bzr</span> <span class="n">resolve</span> <span class="n">file</span>
</pre></div>
</div>
<p>[<strong>TODO</strong>: описать маркеры конфликтов внутри файлов]</p>
</div>
<div class="section" id="id27">
<h2>Публикация ветки<a class="headerlink" href="#id27" title="Ссылка на этот заголовок">¶</a></h2>
<p>Для публикации ветки bzr вам не нужен специализированный сервер, нужен просто
обычный Web-сервер. Просто перенесите файлы на ваш сервер, включая каталог
.bzr. Можно опубликовать ветку (или изменения на ветке) одним из следующих трех
способов:</p>
<ul>
<li><p class="first">Лучший способ - использовать для этого сам bzr.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">%</span> <span class="n">bzr</span> <span class="n">push</span> <span class="n">sftp</span><span class="p">:</span><span class="o">//</span><span class="n">servername</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">directory</span>
</pre></div>
</div>
<p>(Каталог назначения должна быть создан заранее, если только не указана
опция <code class="docutils literal notranslate"><span class="pre">--create-prefix</span></code>)</p>
</li>
<li><p class="first">Другой способ - плагин <code class="docutils literal notranslate"><span class="pre">rspush</span></code> который включен в BzrTools и использует
rsync для публикации изменений в истории ревизий и рабочем дереве.</p>
</li>
<li><p class="first">Вы также можете скопировать файлы руками, переслав архив, или используя
rsync, или другой метод пересылки. Обычно это менее безопасно чем
использовать команду <code class="docutils literal notranslate"><span class="pre">push</span></code>, но может быть быстрее и проще в каких-то
ситуациях.</p>
</li>
</ul>
</div>
<div class="section" id="id28">
<h2>Перемещение изменений между деревьями<a class="headerlink" href="#id28" title="Ссылка на этот заголовок">¶</a></h2>
<p>Это случается и с лучшими из нас: в какой-то момент вы делаете изменения не в
том дереве файлов. Возможно потому, что вы случайно начали работать не в том
каталоге, либо изменений оказались больше чем вы ожидали и вы решили создать
для них новую ветку.</p>
<p>Для перемещения изменений из одного дерева в другое используйте</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">%</span> <span class="n">cd</span> <span class="n">NEWDIR</span>
<span class="o">%</span> <span class="n">bzr</span> <span class="n">merge</span> <span class="o">--</span><span class="n">uncommitted</span> <span class="n">OLDDIR</span>
</pre></div>
</div>
<p>Эта команда перенесет все не зафиксированные изменения с ветки OLDDIR на ветку
NEWDIR. Команда не будет переносить зафиксированные изменения, даже если они
могли бы быть объединены с NEWDIR обычным объединением. Изменения также
остаются и в OLDDIR, но вы можете использовать <code class="docutils literal notranslate"><span class="pre">bzr</span> <span class="pre">revert</span> <span class="pre">OLDDIR</span></code> для их
удаления, как-то только убедитесь, что с NEWDIR все нормально.</p>
<p>NEWDIR не обязательно должен быть копией OLDDIR, но они должны быть связанными
ветками. Чем больше они отличаются, тем больше шанс возникновения конфликтов.</p>
</div>
</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
  <h3><a href="../index.html">Table of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">Учебник Bazaar</a><ul>
<li><a class="reference internal" href="#id1">Введение</a></li>
<li><a class="reference internal" href="#id2">Назначение контроля версий</a><ul>
<li><a class="reference internal" href="#id3">Чем отличаются распределенные системы</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id4">Представляемся Bazaar</a></li>
<li><a class="reference internal" href="#id7">Создаем ветку</a></li>
<li><a class="reference internal" href="#id10">Размещение веток</a></li>
<li><a class="reference internal" href="#id11">Просмотр изменений</a><ul>
<li><a class="reference internal" href="#bzr-status">bzr status</a></li>
<li><a class="reference internal" href="#bzr-diff">bzr diff</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id12">Фиксация изменений</a><ul>
<li><a class="reference internal" href="#bzr-commit">bzr commit</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id13">Сообщение из текстового редактора</a><ul>
<li><a class="reference internal" href="#id14">Выборочная фиксация</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id15">Удаление не зафиксированных изменений</a></li>
<li><a class="reference internal" href="#id16">Игнорирование файлов</a><ul>
<li><a class="reference internal" href="#id17">Глобальные шаблоны для игнорирования</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id19">Просмотр истории</a><ul>
<li><a class="reference internal" href="#bzr-log">bzr log</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id20">Статистика ветки</a></li>
<li><a class="reference internal" href="#id21">Каталоги под контролем версий</a></li>
<li><a class="reference internal" href="#id22">Удаление файлов</a></li>
<li><a class="reference internal" href="#id24">Ветвление</a></li>
<li><a class="reference internal" href="#id25">Следование за изменениями основного проекта</a></li>
<li><a class="reference internal" href="#id26">Объединение со связанных веток</a></li>
<li><a class="reference internal" href="#id27">Публикация ветки</a></li>
<li><a class="reference internal" href="#id28">Перемещение изменений между деревьями</a></li>
</ul>
</li>
</ul>

  <h4>Предыдущий раздел</h4>
  <p class="topless"><a href="../mini-tutorial/index.html"
                        title="предыдущая глава">Bazaar за пять минут</a></p>
  <h4>Следующий раздел</h4>
  <p class="topless"><a href="using_bazaar_with_launchpad.html"
                        title="следующая глава">1&nbsp;&nbsp;&nbsp;Использование Bazaar с Launchpad</a></p>
  <div role="note" aria-label="source link">
    <h3>Эта страница</h3>
    <ul class="this-page-menu">
      <li><a href="../_sources/tutorials/tutorial.txt"
            rel="nofollow">Исходный текст</a></li>
    </ul>
   </div>
<div id="searchbox" style="display: none" role="search">
  <h3>Быстрый поиск</h3>
    <div class="searchformwrapper">
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="Искать" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    </div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related" role="navigation" aria-label="related navigation">
      <h3>Навигация</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="using_bazaar_with_launchpad.html" title="1   Использование Bazaar с Launchpad"
             >вперёд</a></li>
        <li class="right" >
          <a href="../mini-tutorial/index.html" title="Bazaar за пять минут"
             >назад</a> |</li>
<li><a href="http://bazaar.canonical.com/">
    <img src="../_static/bzr icon 16.png" /> Главная</a>&nbsp;|&nbsp;</li>
<a href="http://doc.bazaar.canonical.com/ru/">Документация</a>&nbsp;|&nbsp;</li>

        <li class="nav-item nav-item-0"><a href="../index.html">Содержание (2.7.0)</a> &#187;</li>
 
      </ul>
    </div>
    <div class="footer" role="contentinfo">
        &#169; Copyright 2009-2011 Canonical Ltd.
      Создано с помощью <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.4.
    </div>
  </body>
</html>