Приложение B. Справочник Mercurial Queues

Содержание

B.1. Справочник команд MQ
B.1.1. qapplied — печатает применённые патчи
B.1.2. qcommit — фиксирует изменения в репозитории очереди
B.1.3. qdelete — удалить патч из файла series
B.1.4. qdiff — печатает diff для верхнего применяемого патча
B.1.5. qfinish — перемещает применённые патчи в историю репозитория
B.1.6. qfold — слияние («свёртка»), нескольких патчей в один
B.1.7. qheader — отображает заголовки/описание патча
B.1.8. qimport — импорт сторонних патчей в очередь
B.1.9. qinit — подготовить хранилище для работы с MQ
B.1.10. qnew — создание новых патчей
B.1.11. qnext — печатает имя следующего патча
B.1.12. qpop— извлекает патчи из стека
B.1.13. qprev — печатает имя предыдущего патча
B.1.14. qpush — вставляет патчи в стек
B.1.15. qrefresh — обновление верхнего применённого патча
B.1.16. qrename — переименование патча
B.1.17. qseries — печатает записи серии патчей
B.1.18. qtop— печатает имя текущего патча
B.1.19. qunapplied— печатает не применённые патчи
B.1.20. hg strip — удаляет ревизию и потомков
B.2. Справочник файлов MQ
B.2.1. Файл series
B.2.2. Файл status.

B.1. Справочник команд MQ

Для просмотра команд предоставляемых mq, используйте команду hg help mq.

B.1.1. qapplied — печатает применённые патчи

Команда qapplied выводит стек текущих применённых патчей. Патчи печатаются в порядке от старых к новым, так что последний патч в списке будет «верхним» патчем.

B.1.2. qcommit — фиксирует изменения в репозитории очереди

Команда qcommit фиксирует замеченные изменения в репозитории .hg/patches. Эта команда работает только если директория .hg/patches является репозиторием, например, вы создали каталог с помощью hg qinit -c или запустив hg init в директории после запуска qinit.

Эта команда представляет собой сокращение от hg commit --cwd .hg/patches.

B.1.3. qdelete — удалить патч из файла series

Команда qdelete удаляет запись о патче из файла series в каталоге .hg/patches. Это не извлечение патча, если патч уже применён. По умолчанию, это не приводит к удалению файла патча, для этого используйте опцию -f.

Опции:

  • -f: Удалить файл патча.

B.1.4. qdiff — печатает diff для верхнего применяемого патча

Команда qdiff выводит список различий верхнего применяемого патча. Это эквивалентно hg diff -r-2:-1.

B.1.5. qfinish — перемещает применённые патчи в историю репозитория

Команда hg qfinish преобразует указанные примененные патчи в постоянную ревизию, перемещая их из-под контроля MQ, чтобы они преобразовались в нормальную историю репозитория.

B.1.6. qfold — слияние («свёртка»), нескольких патчей в один

Команда qfold объединяет несколько исправлений в верхний применяемый патч, так что верхний применяемый патч делает объединение всех изменений в патчах запроса.

Патчи для свёртки не должны быть применены; qfold выйдет с ошибкой, если какой-либо патч применён. Порядок, в котором складываются патчи является значимым; hg qfold a b означает «применить текущий верхний патч, затем a, потом b».

Комментарии сворачиваемых патчей добавляются к комментариям патча назначения, при этом каждый блок комментариев разделен символами трёх звездочек («*»). Использование опции -e редактирует сообщение фиксации для комбинированных патчей/ревизий после завершен свёртки.

Опции:

  • -e: Изменить сообщение фиксации и описание патча для недавно свёрнутого патча.

  • -l: использовать содержимое заданного файла в качестве нового сообщения фиксации и описания свёрнутого патча.

  • -m: Используйте данный текст в качестве нового сообщения фиксации и описание патча для сложенного патча.

B.1.7. qheader — отображает заголовки/описание патча

Команда qheader печатает заголовок или описание, из патча. По умолчанию, она печатает заголовок применяемого верхнего патча. С учетом аргументов, оно выводит заголовок именованного патча.

B.1.8. qimport — импорт сторонних патчей в очередь

Команда qimport добавляет запись для внешнего патча в файле series, а также копирует патч в каталог .hg/patches. Она добавляет запись сразу же после верхнего примененного патча, но не вставляет патч.

Если каталог .hg/patches репозиторий, qimport автоматически выполняет hg add импортируемого патча.

B.1.9. qinit — подготовить хранилище для работы с MQ

Команда qinit готовит репозиторий для работы с MQ. Она создает каталог с именем .hg/patches.

Опции:

  • -c: Создает .hg/patches, как репозиторий под своим собственным контролем. Также создается файл .hgignore, для игнорирования файла status.

Если директория .hg/patches репозиторий, команды qimport и qnew автоматически запускают hg add для новых патчей.

B.1.10. qnew — создание новых патчей

Команда qnew создаёт новый патч. Она принимает один обязательный аргумент, имя использующееся для файла патча. Вновь созданный патч создается по-умолчанию пустым. Он добавляется в файл series после текущего верхнего применённого патча, и сразу вставляется верхним патчем.

Если qnew находит измененные файлы в рабочем каталоге, она откажется от создания нового патча, если не используется опция -f (смотрите ниже). Такое поведение позволяет вызвать qrefresh для вашего верхнего применённого патча, перед тем как применить новый патч поверх него.

Опции:

  • -f: Создаёт новый патч, если содержимое рабочего каталога изменено. Любые неразрешенные модификаций добавляются в только что созданный патч, так что после того как команда завершает свою работу, рабочий каталог больше не будут измененым.

  • -m: Использование данного текста как сообщения фиксации. Этот текст будет храниться в начале файла заплатки, до данных патча.

B.1.11. qnext — печатает имя следующего патча

Команда qnext печатает имя следующего патча в файле series после верхнего применяемого патча. Этот патч будет применён, если вы запустите qpush.

B.1.12. qpop— извлекает патчи из стека

Команда qpop удаляет применённые патчи с вершины стека применённых патчей. По умолчанию, она удаляет только один патч.

Эта команда удаляет наборы изменений, которые представляют извлечённые патчи из репозитория, и обновляет рабочий каталог, чтобы устранить последствия патчей.

Эта команда принимает необязательный аргумент, который она использует в качестве имени или индекса патча для извлечения. Если имя передаётся, патчи будут применяться пока патч, имя которого было передано, не станет верхним. Если передаётся номер, qpop использует номер в качестве индекса записи в файле серий, начиная с нуля (пустые строки и строки, содержащие только комментарии не в учитываются). Она извлекает патчи пока выявленный патч не станет самым верхним применённым патчем.

Команда qpop не читает или пишет патчи или файл series. Таким образом, безопасно извлечь патч, который вы удалили из файла series или патч, который был переименован или удален полностью. В двух последних случаях, используйте имя патча, как это было, когда вы применили его.

По умолчанию, команда qpop не выполнится для любого патча, если рабочий каталог был изменен. Вы можете изменить это поведение, используя опцию -f, которая возвращает все изменения в рабочий каталог.

Опции:

  • -a: Извлекает все применённые патчи. Это вернет репозиторий в состояние до установки патчей.

  • -f: Принудительно восстановить любые изменения в рабочем каталоге, при их извлечении.

  • -n: Извлекает патч из именованной очереди.

Команда qpop удаляет одну строку с конца файла status для каждого патча, который она извлекает.

B.1.13. qprev — печатает имя предыдущего патча

Команда qprev печатает название патча в файле series, который находится перед верхним применённым патчем. Он станет самым верхним патчем применённым при запуске qpop.

B.1.14. qpush — вставляет патчи в стек

Команда qpush добавляет патчи на верх стека применённых патчей. По умолчанию, она добавляет только один патч.

Эта команда создает новую ревизию для представления каждого применённого патча и обновляет рабочую директорию применяя патч.

По умолчанию данные используемые при создании ревизии, следующие:

  • Текущая дата и часовой пояс коммитера. Так как эти данные используются для вычисления идентификатора ревизии, это означает, что если вы извлечёте (qpop) патч и добавите (qpush) его снова, ревизия, которые вы вставите будет иметь другой идентификатор, чем та ревизия которую вы удалили.

  • Автор который используется по умолчанию при использовании команды hg commit.

  • Сообщение фиксации — любой текст из файла патча, который находится перед первым заголовком diff. Если нет такого текста, по умолчанию используется сообщение, которое идентифицирует имя патча.

Если патч содержит заголовок Mercurial для патча, информация в заголовке патча перекрывает все эти умолчания.

Опции:

  • -a: вставить все не применённые патчи из файла series, пока есть что вставлять.

  • -l: Добавить название патча к концу сообщения фиксации.

  • -m: Если патч не удастся применить аккуратно, использовать запись исправлений в другой сохранённой очереди, чтобы вычислить параметры трехстороннего слияния, а также выполнить трехстороннее слияние с использованием обычного механизма слияния Mercurial. Использовать результат слияния в качестве нового содержимого патча.

  • -n: Использовать имя очереди, если слияние происходит во время вставки.

Команда qpush читает, но не изменяет, файл series. Он добавляет одну строку в файл hg status для каждого патча, который она вставляет.

B.1.15. qrefresh — обновление верхнего применённого патча

Команда qrefresh обновляет верхний применённый патч. Она изменяет патч, удаляет старую ревизию, которая представляет патч, и создает новую ревизию для представления изменённого патча.

Команда qrefresh просматривает следующие изменения:

  • Изменения в сообщении фиксации, то есть текст до первого заголовка различий в патче, отражены в новом наборе изменений, которая представляет собой патч.

  • Изменения в отслеживаемых файлах в рабочем каталоге добавляются в патч.

  • Изменения файлов отслеживаемых с помощью hg add, hg copy, hg remove, или hg rename. Добавляет файлы и копирует и переименовывает целевой патч, в то время как удаленные файлы и переименованные удаляются.

Даже если qrefresh обнаруживает отсутствие изменений, она по-прежнему переписывает ревизию, которая представляет собой патч. Это приводит к изменению идентификатора отличающегося от предыдущих ревизий, которые идентифицируют патч.

Опции:

  • -e: Изменение сообщения фиксации и описания патча, используя текстовый редактор.

  • -m: Изменение сообщения фиксации и описания патча, используя передаваемый текст.

  • -l: Изменение сообщения фиксации и описания патча, используя текст из переданного файла.

B.1.16. qrename — переименование патча

Команда qrename переименовывает патч и изменяет запись для патча в файле series.

С помощью единственного аргумента, qrename переименовывает верхний применённый патч. С двумя аргументами, переименовывает патч из первого аргумента ко второму.

B.1.17. qseries — печатает записи серии патчей

Команда qseries выводит целый ряд патчей из файла series. Он печатает только имена патчей, а не пустые строки или комментарии. Он печатает в порядке от первого к последнему применённому патчу.

B.1.18. qtop— печатает имя текущего патча

Команда qtop печатает имя верхнего примененного в настоящее время патча.

B.1.19. qunapplied— печатает не применённые патчи

Команда qunapplied печатает имена патчей из файла series, которые пока еще не применены. Он выводит их в порядке от следующего патча, которые будет вставлен до последнего.

B.1.20. hg strip — удаляет ревизию и потомков

Команда hg strip удаляет ревизию, и всех её потомков, из репозитория. Она отменяет последствия изменений удаленной из репозитория, и обновляет рабочую директорию на первого родителя удалённой ревизии.

Команда hg strip сохраняет резервные копии удаленных ревизий в пакете, так что они могут быть повторно применены, если по ошибке удалены.

Опции:

  • -b: Сохранить несвязанные ревизии, смешанные с ревизиями в резервный комплект.

  • -f: если ветвь имеет несколько голов, удаляет все головы.

  • -n: Не сохранять резервный комплект.

B.2. Справочник файлов MQ

B.2.1. Файл series

Файл series содержит список имен из всех патчей, которые MQ может применить. Он представляется в виде списка имен, с одним именем в каждой строке. Начальные и конечные пробелы в строке игнорируются.

Строки могут содержать комментарии, которые начинается с символа «#» и продолжается до конца строки. Пустые строки и строки, содержащие только комментарии, игнорируются.

Вам часто придется изменять ряд файлов вручную, поэтому поддерживаются комментарии и пустые строки, упомянутые выше. Например, вы можете временно закомментировать патч, и qpush будет пропускать этот патч при применении исправлений. Также вы можете изменить последовательность применения патчей, изменяя их порядок в файле series.

Размещение файла series под контролем версий также поддерживается. Это хорошая идея, чтобы поставить все патчи, которые к ней относятся, под контроль версий. Если вы создаете каталог с помощью опции -c команды qinit, это будет сделано автоматически.

B.2.2. Файл status.

Файл status содержит имена и хеши ревизий всех патчей, которые в настоящее время могут быть применены MQ. В отличие от файла series, этот файл не предназначен для редактирования. Вы не должны помещать этот файл под контроль версий, или изменять его в любом случае. Он используется MQ строго для внутреннего учета.