Как отказаться от слияния hg?

Я новичок в сотрудничестве с Mercurial. Моя ситуация:

  • Другой программист изменил rev 1 файла, чтобы заменить 4-пространственные отступы с отступом 2-х сторон. (I. изменил каждую строку.) Назовите это rev 2, нажав на удаленное репо.
  • Я внес существенные изменения rev 1 с различными изменениями кода в моей локальной рабочей области. Назовите это rev 3.
  • У меня hg pull ed и hg merge d без четкого представления о том, что происходит.
  • Конфликты мириады и не очень существенные.

Итак, мне очень жаль, что я не изменил свое местное репо на 2-х мерные отступы перед слиянием; то слияние будет тривиальным (я полагаю). Но я не могу создать резервную копию. Мне кажется, мне нужно hg update -r 3, но он говорит abort: outstanding uncommitted merges.

Как я могу отменить слияние, изменить интервал в моем локальном репо и повторить?

Ответ 1

Вы можете отменить незафиксированные изменения с помощью -C (или -clean):

hg update -C -r 3

BEWARE: Все, что не было совершено, исчезнет!

После этого вы, вероятно, должны использовать какой-то инструмент форматирования кода для выполнения всей операции или, по крайней мере, найти и заменить регулярные выражения. Что-то так же просто, как заменить то, что соответствует ^____ (используйте 4 пробела вместо подчеркиваний) с __ (2 пробела), повторяется несколько раз (если только у вас нет безумно вложенного кода).

Ответ 2

BTW: если вы просто вернули слияние, которое вы сделали, а 3 - не номер версии, вы можете сделать это:

hg update -C -r .

Ответ 3

Чтобы отменить незафиксированное слияние, используйте

hg update --clean

который проверит чистую копию исходного родителя слияния, потеряв все изменения.

Ответ 4

Я, по-видимому, просто нуждался в hg update -C -r 3, который перезаписывает мои локальные файлы с учетом rev (это то, что я думал hg update, но я был не прав.) Спасибо за мою помощь!