Подтвердить что ты не робот

Как преобразовать пакет очередей Mercurial в локальные изменения?

Этот ответ показывает, как вы можете понизить фиксацию патча, но как я могу конвертировать mq-патч только в локальные изменения?

4b9b3361

Ответ 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 > щелкните правой кнопкой мыши патч > Экспорт > Копировать патч), затем не используйте патч, и, наконец, импорт из буфера обмена с назначением "Рабочий каталог" работает. Ниже приведены некоторые снимки экрана, демонстрирующие эту процедуру: enter image description here

Ответ 2

Возможно, более простая альтернатива:

hg qfinish qtip
hg strip -k tip

То есть закончить патч, а затем удалить итоговое значение фиксации, сохранив его изменения (параметр -k до strip).