Source

hgbook-ru / ru / appB-mq-ref.xml

<!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : -->

<appendix id="chap:mqref">
  <?dbhtml filename="mercurial-queues-reference.html"?>
  <title>Справочник Mercurial Queues</title>

  <sect1 id="sec:mqref:cmdref">
    <title>Справочник команд MQ</title>

    <para id="x_5e8">Для просмотра команд предоставляемых mq, используйте команду <command role="hg-cmd">hg help mq</command>.</para>

    <sect2>
      <title><command role="hg-ext-mq">qapplied</command> &emdash; печатает применённые патчи</title>

      <para id="x_5e9">Команда <command role="hg-ext-mq">qapplied</command> выводит стек текущих применённых патчей. Патчи печатаются в порядке от старых к новым, так что последний патч в списке будет <quote>верхним</quote> патчем.</para>

    </sect2>
    <sect2>
      <title><command role="hg-ext-mq">qcommit</command> &emdash; фиксирует изменения в репозитории очереди</title>

      <para id="x_5ea">Команда <command role="hg-ext-mq">qcommit</command> фиксирует замеченные изменения в репозитории <filename role="special" class="directory">.hg/patches</filename>. Эта команда работает только если директория <filename role="special" class="directory">.hg/patches</filename> является репозиторием, например, вы создали каталог с помощью <command role="hg-cmd">hg qinit <option role="hg-ext-mq-cmd-qinit-opt">-c</option></command> или запустив <command role="hg-cmd">hg init</command> в директории после запуска <command role="hg-ext-mq">qinit</command>.</para>

      <para id="x_5eb">Эта команда представляет собой сокращение от <command role="hg-cmd">hg commit --cwd .hg/patches</command>.</para>
    </sect2>
    <sect2>
	<title><command role="hg-ext-mq">qdelete</command> &emdash; удалить патч из файла <filename role="special">series</filename></title>

      <para id="x_5ec">Команда <command role="hg-ext-mq">qdelete</command> удаляет запись о патче из файла <filename role="special">series</filename> в каталоге <filename role="special" class="directory">.hg/patches</filename>. Это не извлечение патча, если патч уже применён. По умолчанию, это не приводит к удалению файла патча, для этого используйте опцию <option role="hg-ext-mq-cmd-qdel-opt">-f</option>.</para>

      <para id="x_5ed">Опции:</para>
      <itemizedlist>
	<listitem><para id="x_5ee"><option role="hg-ext-mq-cmd-qdel-opt">-f</option>: Удалить файл патча.</para>
	</listitem></itemizedlist>

    </sect2>
    <sect2>
      <title><command role="hg-ext-mq">qdiff</command> &emdash; печатает diff для верхнего применяемого патча</title>

      <para id="x_5ef">Команда <command role="hg-ext-mq">qdiff</command> выводит список различий верхнего применяемого патча. Это эквивалентно <command role="hg-cmd">hg diff -r-2:-1</command>.</para>

    </sect2>
    <sect2>
      <title><command role="hg-ext-mq">qfinish</command> &emdash; перемещает применённые патчи в историю репозитория</title>

      <para id="x_72d">Команда <command>hg qfinish</command> преобразует указанные примененные патчи в постоянную ревизию, перемещая их из-под контроля MQ, чтобы они преобразовались в нормальную историю репозитория.</para>
    </sect2>

    <sect2>
      <title><command role="hg-ext-mq">qfold</command> &emdash; слияние (<quote>свёртка</quote>), нескольких патчей в один</title>

      <para id="x_5f0">Команда <command role="hg-ext-mq">qfold</command> объединяет несколько исправлений в верхний применяемый патч, так что верхний применяемый патч делает объединение всех изменений в патчах запроса.</para>

      <para id="x_5f1">Патчи для свёртки не должны быть применены; <command role="hg-ext-mq">qfold</command> выйдет с ошибкой, если какой-либо патч применён. Порядок, в котором складываются патчи является значимым; <command role="hg-cmd">hg qfold a b</command> означает <quote>применить текущий верхний патч, затем <literal>a</literal>, потом <literal>b</literal></quote>.</para>

      <para id="x_5f2">Комментарии сворачиваемых патчей добавляются к комментариям патча назначения, при этом каждый блок комментариев разделен символами трёх звездочек (<quote><literal>*</literal></quote>). Использование опции <option role="hg-ext-mq-cmd-qfold-opt">-e</option> редактирует сообщение фиксации для комбинированных патчей/ревизий после завершен свёртки.</para>

      <para id="x_5f3">Опции:</para>
      <itemizedlist>
	<listitem><para id="x_5f4"><option role="hg-ext-mq-cmd-qfold-opt">-e</option>: Изменить сообщение фиксации и описание патча для недавно свёрнутого патча.</para>
	</listitem>
	<listitem><para id="x_5f5"><option role="hg-ext-mq-cmd-qfold-opt">-l</option>: использовать содержимое заданного файла в качестве нового сообщения фиксации и  описания свёрнутого патча.</para>
	</listitem>
	<listitem><para id="x_5f6"><option role="hg-ext-mq-cmd-qfold-opt">-m</option>: Используйте данный текст в качестве нового сообщения фиксации и описание патча для сложенного патча.</para>
	</listitem></itemizedlist>

    </sect2>
    <sect2>
      <title><command role="hg-ext-mq">qheader</command> &emdash; отображает заголовки/описание патча</title>

      <para id="x_5f7">Команда <command role="hg-ext-mq">qheader</command> печатает заголовок или описание, из патча. По умолчанию, она печатает заголовок применяемого верхнего патча. С учетом аргументов, оно выводит заголовок именованного патча.</para>

    </sect2>
    <sect2>
      <title><command role="hg-ext-mq">qimport</command> &emdash; импорт сторонних патчей в очередь</title>

      <para id="x_5f8">Команда <command role="hg-ext-mq">qimport</command> добавляет запись для внешнего патча в файле <filename role="special">series</filename>, а также копирует патч в каталог <filename role="special" class="directory">.hg/patches</filename>. Она добавляет запись сразу же после верхнего примененного патча, но не вставляет патч.</para>

      <para id="x_5f9">Если каталог <filename role="special" class="directory">.hg/patches</filename> репозиторий, <command role="hg-ext-mq">qimport</command> автоматически выполняет <command role="hg-cmd">hg add</command> импортируемого патча.</para>

    </sect2>
    <sect2>
      <title><command role="hg-ext-mq">qinit</command> &emdash; подготовить хранилище для работы с MQ</title>

      <para id="x_5fa">Команда <command role="hg-ext-mq">qinit</command> готовит репозиторий для работы с MQ. Она создает каталог с именем <filename role="special" class="directory">.hg/patches</filename>.</para>

      <para id="x_5fb">Опции:</para>
      <itemizedlist>
	<listitem><para id="x_5fc"><option role="hg-ext-mq-cmd-qinit-opt">-c</option>: Создает <filename role="special" class="directory">.hg/patches</filename>, как репозиторий под своим собственным контролем. Также создается файл <filename role="special">.hgignore</filename>, для игнорирования файла <filename role="special">status</filename>.</para>
	</listitem></itemizedlist>

      <para id="x_5fd">Если директория <filename role="special" class="directory">.hg/patches</filename> репозиторий, команды <command role="hg-ext-mq">qimport</command> и <command role="hg-ext-mq">qnew</command> автоматически запускают <command role="hg-cmd">hg add</command> для новых патчей.</para>

    </sect2>
    <sect2>
      <title><command role="hg-ext-mq">qnew</command> &emdash; создание новых патчей</title>

      <para id="x_5fe">Команда <command role="hg-ext-mq">qnew</command> создаёт новый патч. Она принимает один обязательный аргумент, имя использующееся для файла патча. Вновь созданный патч создается по-умолчанию пустым. Он добавляется в файл <filename role="special">series</filename> после текущего верхнего применённого патча, и сразу вставляется верхним патчем.</para>

      <para id="x_5ff">Если <command role="hg-ext-mq">qnew</command> находит измененные файлы в рабочем каталоге, она откажется от создания нового патча, если не используется опция <option role="hg-ext-mq-cmd-qnew-opt">-f</option> (смотрите ниже). Такое поведение позволяет вызвать <command role="hg-ext-mq">qrefresh</command> для вашего верхнего применённого патча, перед тем как применить новый патч поверх него.</para>

      <para id="x_600">Опции:</para>
      <itemizedlist>
	<listitem><para id="x_601"><option role="hg-ext-mq-cmd-qnew-opt">-f</option>: Создаёт новый патч, если содержимое рабочего каталога изменено. Любые неразрешенные модификаций добавляются в только что созданный патч, так что после того как команда завершает свою работу, рабочий каталог больше не будут измененым.</para>
	</listitem>
	<listitem><para id="x_602"><option role="hg-ext-mq-cmd-qnew-opt">-m</option>: Использование данного текста как сообщения фиксации. Этот текст будет храниться в начале файла заплатки, до данных патча.</para>
	</listitem></itemizedlist>

    </sect2>
    <sect2>
      <title><command role="hg-ext-mq">qnext</command> &emdash; печатает имя следующего патча</title>

      <para id="x_603">Команда <command role="hg-ext-mq">qnext</command> печатает имя следующего патча в файле <filename role="special">series</filename> после верхнего применяемого патча. Этот патч будет применён, если вы запустите <command role="hg-ext-mq">qpush</command>.</para>

    </sect2>
    <sect2>
      <title><command role="hg-ext-mq">qpop</command>&emdash; извлекает патчи из стека</title>

      <para id="x_604">Команда <command role="hg-ext-mq">qpop</command> удаляет применённые патчи с вершины стека применённых патчей. По умолчанию, она удаляет только один патч.</para>

      <para id="x_605">Эта команда удаляет наборы изменений, которые представляют извлечённые патчи из репозитория, и обновляет рабочий каталог, чтобы устранить последствия патчей.</para>

      <para id="x_606">Эта команда принимает необязательный аргумент, который она использует в качестве имени или индекса патча для извлечения. Если имя передаётся, патчи будут применяться пока патч, имя которого было передано, не станет верхним. Если передаётся номер, <command role="hg-ext-mq">qpop</command> использует номер в качестве индекса записи в файле серий, начиная с нуля (пустые строки и строки, содержащие только комментарии не в учитываются). Она извлекает патчи пока выявленный патч не станет самым верхним применённым патчем.</para>

      <para id="x_607">Команда <command role="hg-ext-mq">qpop</command> не читает или пишет патчи или файл <filename role="special">series</filename>. Таким образом, безопасно извлечь патч, который вы удалили из файла <filename role="special">series</filename> или патч, который был переименован или удален полностью. В двух последних случаях, используйте имя патча, как это было, когда вы применили его.</para>

      <para id="x_608">По умолчанию, команда <command role="hg-ext-mq">qpop</command> не выполнится для любого патча, если рабочий каталог был изменен. Вы можете изменить это поведение, используя опцию <option role="hg-ext-mq-cmd-qpop-opt">-f</option>, которая возвращает все изменения в рабочий каталог.</para>

      <para id="x_609">Опции:</para>
      <itemizedlist>
	<listitem><para id="x_60a"><option role="hg-ext-mq-cmd-qpop-opt">-a</option>: Извлекает все применённые патчи. Это вернет репозиторий в состояние до установки патчей.</para>
	</listitem>
	<listitem><para id="x_60b"><option role="hg-ext-mq-cmd-qpop-opt">-f</option>: Принудительно восстановить любые изменения в рабочем каталоге, при их извлечении.</para>
	</listitem>
	<listitem><para id="x_60c"><option role="hg-ext-mq-cmd-qpop-opt">-n</option>: Извлекает патч из именованной очереди.</para>
	</listitem></itemizedlist>

      <para id="x_60d">Команда <command role="hg-ext-mq">qpop</command> удаляет одну строку с конца файла <filename role="special">status</filename> для каждого патча, который она извлекает.</para>

    </sect2>
    <sect2>
      <title><command role="hg-ext-mq">qprev</command> &emdash; печатает имя предыдущего патча</title>

      <para id="x_60e">Команда <command role="hg-ext-mq">qprev</command> печатает название патча в файле <filename role="special">series</filename>, который находится перед верхним применённым патчем. Он станет самым верхним патчем применённым при запуске <command role="hg-ext-mq">qpop</command>.</para>

    </sect2>
    <sect2 id="sec:mqref:cmd:qpush">
      <title><command role="hg-ext-mq">qpush</command> &emdash; вставляет патчи в стек</title>

      <para id="x_60f">Команда <command role="hg-ext-mq">qpush</command> добавляет патчи на верх стека применённых патчей. По умолчанию, она добавляет только один патч.</para>

      <para id="x_610">Эта команда создает новую ревизию для представления каждого применённого патча и обновляет рабочую директорию применяя патч.</para>

      <para id="x_611">По умолчанию данные используемые при создании ревизии, следующие:</para>
      <itemizedlist>
	<listitem><para id="x_612">Текущая дата и часовой пояс коммитера. Так как эти данные используются для вычисления идентификатора ревизии, это означает, что если вы извлечёте (<command role="hg-ext-mq">qpop</command>) патч и добавите (<command role="hg-ext-mq">qpush</command>) его снова, ревизия, которые вы вставите будет иметь другой идентификатор, чем та ревизия которую вы удалили.</para>
	</listitem>
	<listitem><para id="x_613">Автор который используется по умолчанию при использовании команды <command role="hg-cmd">hg commit</command>.</para>
	</listitem>
	<listitem><para id="x_614">Сообщение фиксации &emdash; любой текст из файла патча, который находится перед первым заголовком diff. Если нет такого текста, по умолчанию используется сообщение, которое идентифицирует имя патча.</para>
	</listitem></itemizedlist>
      <para id="x_615">Если патч содержит заголовок Mercurial для патча, информация в заголовке патча перекрывает все эти умолчания.</para>

      <para id="x_616">Опции:</para>
      <itemizedlist>
	<listitem><para id="x_617"><option role="hg-ext-mq-cmd-qpush-opt">-a</option>: вставить все не применённые патчи из файла <filename role="special">series</filename>, пока есть что вставлять.</para>
	</listitem>
	<listitem><para id="x_618"><option role="hg-ext-mq-cmd-qpush-opt">-l</option>: Добавить название патча к концу сообщения фиксации.</para>
	</listitem>
	<listitem><para id="x_619"><option role="hg-ext-mq-cmd-qpush-opt">-m</option>: Если патч не удастся применить аккуратно, использовать запись исправлений в другой сохранённой очереди, чтобы вычислить параметры трехстороннего слияния, а также выполнить трехстороннее слияние с использованием обычного механизма слияния Mercurial. Использовать результат слияния в качестве нового содержимого патча.</para>
	</listitem>
	<listitem><para id="x_61a"><option role="hg-ext-mq-cmd-qpush-opt">-n</option>: Использовать имя очереди, если слияние происходит во время вставки.</para>
	</listitem></itemizedlist>

      <para id="x_61b">Команда <command role="hg-ext-mq">qpush</command> читает, но не изменяет, файл <filename role="special">series</filename>. Он добавляет одну строку в файл <command role="hg-cmd">hg status</command> для каждого патча, который она вставляет.</para>

    </sect2>
    <sect2>
      <title><command role="hg-ext-mq">qrefresh</command> &emdash; обновление верхнего применённого патча</title>

      <para id="x_61c">Команда <command role="hg-ext-mq">qrefresh</command> обновляет верхний применённый патч. Она изменяет патч, удаляет старую ревизию, которая представляет патч, и создает новую ревизию для представления изменённого патча.</para>

      <para id="x_61d">Команда <command role="hg-ext-mq">qrefresh</command> просматривает следующие изменения:</para>
      <itemizedlist>
	<listitem><para id="x_61e">Изменения в сообщении фиксации, то есть текст до первого заголовка различий в патче, отражены в новом наборе изменений, которая представляет собой патч.</para>
	</listitem>
	<listitem><para id="x_61f">Изменения в отслеживаемых файлах в рабочем каталоге добавляются в патч.</para>
	</listitem>
	<listitem><para id="x_620">Изменения файлов отслеживаемых с помощью <command role="hg-cmd">hg add</command>, <command role="hg-cmd">hg copy</command>, <command role="hg-cmd">hg remove</command>, или <command role="hg-cmd">hg rename</command>. Добавляет файлы и копирует и переименовывает целевой патч, в то время как удаленные файлы и переименованные удаляются.</para>
	</listitem></itemizedlist>

      <para id="x_621">Даже если <command role="hg-ext-mq">qrefresh</command> обнаруживает отсутствие изменений, она по-прежнему переписывает ревизию, которая представляет собой патч. Это приводит к изменению идентификатора отличающегося от предыдущих ревизий, которые идентифицируют патч.</para>

      <para id="x_622">Опции:</para>
      <itemizedlist>
	<listitem><para id="x_623"><option role="hg-ext-mq-cmd-qrefresh-opt">-e</option>: Изменение сообщения фиксации и описания патча, используя текстовый редактор.</para>
	</listitem>
	<listitem><para id="x_624"><option role="hg-ext-mq-cmd-qrefresh-opt">-m</option>: Изменение сообщения фиксации и описания патча, используя передаваемый текст.</para>
	</listitem>
	<listitem><para id="x_625"><option role="hg-ext-mq-cmd-qrefresh-opt">-l</option>: Изменение сообщения фиксации и описания патча, используя текст из переданного файла.</para>
	</listitem></itemizedlist>

    </sect2>
    <sect2>
      <title><command role="hg-ext-mq">qrename</command> &emdash; переименование патча</title>

      <para id="x_626">Команда qrename переименовывает патч и изменяет запись для патча в файле <filename role="special">series</filename>.</para>

      <para id="x_627">С помощью единственного аргумента, <command role="hg-ext-mq">qrename</command> переименовывает верхний применённый патч. С двумя аргументами, переименовывает патч из первого аргумента ко второму.</para>

    </sect2>
    <sect2>
      <title><command role="hg-ext-mq">qseries</command> &emdash; печатает записи серии патчей</title>

      <para id="x_62a">Команда <command role="hg-ext-mq">qseries</command> выводит целый ряд патчей из файла <filename role="special">series</filename>. Он печатает только имена патчей, а не пустые строки или комментарии. Он печатает в порядке от первого к последнему применённому патчу.</para>

    </sect2>
    <sect2>
      <title><command role="hg-ext-mq">qtop</command>&emdash; печатает имя текущего патча</title>

      <para id="x_62b">Команда <command role="hg-ext-mq">qtop</command> печатает имя верхнего примененного в настоящее время патча.</para>

    </sect2>
    <sect2>
      <title><command role="hg-ext-mq">qunapplied</command>&emdash; печатает не применённые патчи</title>

      <para id="x_62c">Команда <command role="hg-ext-mq">qunapplied</command> печатает имена патчей из файла <filename role="special">series</filename>, которые пока еще не применены. Он выводит их в порядке от следующего патча, которые будет вставлен до последнего.</para>

    </sect2>
    <sect2>
      <title><command role="hg-cmd">hg strip</command> &emdash; удаляет ревизию и потомков</title>

      <para id="x_62d">Команда <command role="hg-cmd">hg strip</command> удаляет ревизию, и всех её потомков, из репозитория. Она отменяет последствия изменений удаленной из репозитория, и обновляет рабочую директорию на первого родителя удалённой ревизии.</para>

      <para id="x_62e">Команда <command role="hg-cmd">hg strip</command> сохраняет резервные копии удаленных ревизий в пакете, так что они могут быть повторно применены, если по ошибке удалены.</para>

      <para id="x_62f">Опции:</para>
      <itemizedlist>
	<listitem><para id="x_630"><option role="hg-opt-strip">-b</option>: Сохранить несвязанные ревизии, смешанные с ревизиями в резервный комплект.</para>
	</listitem>
	<listitem><para id="x_631"><option role="hg-opt-strip">-f</option>: если ветвь имеет несколько голов, удаляет все головы.</para>
	</listitem>
	<listitem><para id="x_632"><option role="hg-opt-strip">-n</option>: Не сохранять резервный комплект.</para>
	</listitem></itemizedlist>

    </sect2>
  </sect1>
  <sect1>
    <title>Справочник файлов MQ</title>

    <sect2>
      <title>Файл <filename role="special">series</filename></title>

      <para id="x_633">Файл <filename role="special">series</filename> содержит список имен из всех патчей, которые MQ может применить. Он представляется в виде списка имен, с одним именем в каждой строке. Начальные и конечные пробелы в строке игнорируются.</para>

      <para id="x_634">Строки могут содержать комментарии, которые начинается с символа <quote><literal>#</literal></quote> и продолжается до конца строки. Пустые строки и строки, содержащие только комментарии, игнорируются.</para>

      <para id="x_635">Вам часто придется изменять ряд файлов вручную, поэтому поддерживаются комментарии и пустые строки, упомянутые выше. Например, вы можете временно закомментировать патч, и <command role="hg-ext-mq">qpush</command> будет пропускать этот патч при применении исправлений. Также вы можете изменить последовательность применения патчей, изменяя их порядок в файле <filename role="special">series</filename>.</para>

      <para id="x_636">Размещение файла <filename role="special">series</filename> под контролем версий также поддерживается. Это хорошая идея, чтобы поставить все патчи, которые к ней относятся, под контроль версий. Если вы создаете каталог с помощью опции <option role="hg-ext-mq-cmd-qinit-opt">-c</option> команды <command role="hg-ext-mq">qinit</command>, это будет сделано автоматически.</para>

    </sect2>
    <sect2>
      <title>Файл <filename role="special">status</filename>.</title>

      <para id="x_637">Файл <filename role="special">status</filename> содержит имена и хеши ревизий всех патчей, которые в настоящее время могут быть применены MQ. В отличие от файла <filename role="special">series</filename>, этот файл не предназначен для редактирования. Вы не должны помещать этот файл под контроль версий, или изменять его в любом случае. Он используется MQ строго для внутреннего учета.</para>

    </sect2>
  </sect1>
</appendix>

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