Как отказаться от hg merge?

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

  • Другой программист изменил версию 1 файла, чтобы заменить отступы с 4 пробелами на отступ с 2 пробелами. (То есть меняли каждую строку.) Вызовите эту версию 2, перенесенную в удаленный репозиторий.
  • Я внес существенные изменения в редакцию 1 с различными изменениями кода в моей локальной рабочей области. Назовите это Rev 3.
  • Я hg pull Ed и hg merge D без четкого представления о том, что происходит.
  • Конфликты бесчисленные и не очень существенные.

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

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

127
задан Martin Geisler 3 April 2010 в 18:21
поделиться

3 ответа

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

hg update -C -r 3

ОСТОРОЖНО: Все, что не было зафиксировано, исчезнет!

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

122
ответ дан 24 November 2019 в 00:44
поделиться

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

2
ответ дан 24 November 2019 в 00:44
поделиться

Кстати: если вы просто отменили сделанное слияние, а номер 3 не является вашим номером ревизии, вы можете сделать это:

hg update -C -r .
127
ответ дан 24 November 2019 в 00:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: