Как вставить только один конкретный патч в Mercurial Queues?

Вот что я сделал:

hg init
hg qnew -m "p1" p1.patch
; some changes
hg qrefresh
hg qpop
hg qnew -m "p2" p2.patch
; some changes
hg qrefresh
hg qpop

Теперь эти 2 патча были отдельными функциями и не имеют ничего общего друг с другом. Они должны быть независимыми друг от друга.

Теперь я делаю (потому что я хочу только 1-й функции)

hg qpush p1.patch

Это говорит:

applying p2.patch
applying p1.patch

и это дает мне оба изменения, которые я сделал!

Я делаю что-то неправильно?

Он также выдвигает другие патчи, когда я говорю, что нужно нажать конкретный патч.

1 ответ

Решение

Вы забыли одну вещь: множество MQ-патчей является очередью (FIFO queue). Т.е. если вы видите более одного патча в hg qseries, вы должны помнить - qpush | qpop будет применять | не применять патчи не в случайном порядке, а в последовательном порядке: толчок снизу вверх, всплывающее в обратном порядке

Произвольный доступ (и изменение порядка исправлений в серии как побочный эффект) --move вариант для qpush. В вашем случае (используя только один патч за раз) и названия патчей

  • hg qpop -a
  • hg qpush --move p1.patch
  • hg qpop -a
  • hg qpush --move p2.patch

Во избежание ошибок вы можете переопределить qpush (для этого репозитория) в разделе псевдонимов для использования всегда --move вариант

Другие вопросы по тегам