Как вставить только один конкретный патч в 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
вариант