Недавно я начал работать с MQ, так как мне нравится идея работать над изолированными патчами и совершать транзакции, не затрагивая репо, пока набор изменений не будет достаточно доработан. До этого я работал с продлением Mercurial shelves, но обнаружил, что он немного нестабилен. То, что я все еще пытаюсь выяснить в MQ, заключается в том, как держать патчи отдельно друг от друга и применять их в определенном порядке и в разных ветвях. Здесь мой нормальный поток -
1. Начните работу над новым патчем:
hg qnew fix-bug-1234 -m "fix bug 1234"
# do some work
hg qrefresh
2. Получить новую функцию/ошибку для работы:
hg qpop fix-bug-1234
hg qnew some-feature -m "implement feature X"
# some work on feature X (perhaps in a different branch)
hg qrefresh
3. На этом этапе я хотел бы вернуться к работе над исправлением ошибок и отложить работу функции. Я подумал, что это просто:
hg qpop some-feature
hg qpush fix-bug-1234
# wrap up bug fix
hg qfinish fix-bug-1234
# get back to work on feature
Однако MQ, похоже, всегда использует последний патч, созданный в этой серии, и применяет его независимо от команды qpop/qpush, которую я использую. Я должен отметить, что файлы, над которыми я работаю, полностью разделены (хотя иногда они могут быть одинаковыми).
Я что-то упустил? Должен ли я использовать hg qqueue
для этого? Спасибо.