Руководство по работе с несколькими очередями исправлений hg mq (в одном репозитории против многих вложенных репозиториев)

#mercurial #tortoisehg #mercurial-queue

#mercurial #tortoisehg #mercurial-queue

Вопрос:

Я пытаюсь настроить свой рабочий процесс с помощью MQ, как описано в MqTutorial и в главе 13 HGbook.HGbook Часть, с которой я борюсь, заключается в том, как получить несколько запросов на исправление в зависимости от версии.

Альтернативы:

I. Создайте отдельный репозиторий для каждой очереди. Чтобы сделать это управляемым, отметьте репозитории как вложенные хранилища в файле .hgsub

Проблема: следующее приводит к ошибке: path содержит недопустимый компонент

  .hg/patches-queue1 = .hg/patches-queue1
  

II. В главе 13 HGbook описывается, что вы можете добавлять исправления в подкаталоги, такие как

  qnew queue1/patch1.diff
  

Проблема: все исправления все еще находятся в одной очереди и должны применяться по порядку

Есть ли другой способ, чтобы все мои очереди исправлений находились под контролем версий и были отправлены? Несколько очередей исправлений HG MQ в одном репозитории?

Ответ №1:

Ознакомьтесь с hg qqueue командой, которая является частью mq. Это позволяет автоматически переключать несколько очередей исправлений:

 hg qqueue [OPTION] [QUEUE]

manage multiple patch queues

    Supports switching between different patch queues, as well as creating new
    patch queues and deleting existing ones.

    Omitting a queue name or specifying -l/--list will show you the registered
    queues - by default the "normal" patches queue is registered. The
    currently active queue will be marked with "(active)".

    To create a new queue, use -c/--create. The queue is automatically made
    active, except in the case where there are applied patches from the
    currently active queue in the repository. Then the queue will only be
    created and switching will fail.

    To delete an existing queue, use --delete. You cannot delete the currently
    active queue.

    Returns 0 on success.

options:

 -l --list    list all available queues
 -c --create  create new queue
    --rename  rename active queue
    --delete  delete reference to queue
    --purge   delete queue, and remove patch dir
  

Вы не можете допустить, чтобы содержимое в .hg было вложенными репозиториями внешних (outer / parent) репозиториев, но должна быть возможность иметь разные пути для каждого из репозиториев qqueue и, возможно, сделать их все вложенными репозиториями родительского репозитория, который сам находится внутри .hg / patches.