Этот ответ показывает, как вы можете понизить фиксацию патча, но как я могу конвертировать mq-патч только в локальные изменения?
Как преобразовать пакет очередей Mercurial в локальные изменения?
Ответ 1
Короткий ответ
Убедитесь, что патч применяется, а затем:
hg qrefresh nothing
hg qpop --keep-changes
hg qdelete "Name of patch"
Длинный ответ
Во-первых, вы должны убедиться, что исправления не отслеживаются. Для этого используйте
hg qrefresh nothing
nothing
- это просто случайное имя файла, которое не находится в репозитории. Обычно я использую hg qref 0
для краткости. hg qrefresh
принимает необязательный шаблон файла. Если он задан, патч будет отслеживать изменения, соответствующие шаблону, и только те. Если ничто не соответствует шаблону файла, изменения не будут отслеживаться патчем, и, таким образом, будут только локальные изменения.
Теперь у вас есть бесполезный патч, лежащий вокруг, и у вас есть локальные изменения. Чтобы очистить, вы можете сделать
hg qpop --keep-changes
чтобы пометить патч, даже если есть локальные изменения. Наконец, чтобы удалить мертвый, пустой и непримененный патч, вы можете использовать
hg qrm "Name of patch"
Вы не можете удалить прикладной патч, поэтому вам понадобится шаг hg qpop --keep-changes
.
(Примечание: hg qrm
и hg qremove
являются псевдонимами hg qdelete
.)
При использовании TortoiseHg
С TortoiseHg, экспортируя патч в буфер обмена (Workbench > щелкните правой кнопкой мыши патч > Экспорт > Копировать патч), затем не используйте патч, и, наконец, импорт из буфера обмена с назначением "Рабочий каталог" работает. Ниже приведены некоторые снимки экрана, демонстрирующие эту процедуру:
Ответ 2
Возможно, более простая альтернатива:
hg qfinish qtip
hg strip -k tip
То есть закончить патч, а затем удалить итоговое значение фиксации, сохранив его изменения (параметр -k
до strip
).