Как разрешить этот ртутный конфликт? - PullRequest
11 голосов
/ 25 января 2012

Я разочарован в Mercurial и Python, потому что это делает простые вещи трудными.У меня тривиальный конфликт, и поскольку Mercurial не дает никаких советов, что делать, я даже не знаю, как разрешить этот тривиальный конфликт файлов:

KDiff3

Конфликт тривиален, ноесли я не могу решить это, я не могу решить и ничего сложного.Могу ли я просто отредактировать файл так, как я хочу, и зафиксировать его снова из любого места?Должен ли я запустить hg merge?Почему Mercurial даже не позволяет мне выбрать версию для сохранения?Почему что-то тривиальное почти невозможно сделать, не покопавшись в 1000 плохо написанных страницах?

Ответы [ 2 ]

24 голосов
/ 25 января 2012

Вам необходимо ознакомиться с документацией KDiff3 , в частности с разделом слияния и окном вывода . Чтобы разрешить конфликт, вам нужно решить, является ли live или january правильным выбором для линии. Это ваше решение, ни один инструмент не может знать, имели ли вы в виду одно или другое.

В KDiff3 вы нажимаете Ctrl + 2 , чтобы выбрать live, нажмите Ctrl + 3 , чтобы выбрать january или щелкните правой кнопкой мыши на полях нижнего окна и выберите нужную строку. Вы также можете нажать в нижнем окне и отредактировать строку вручную.

Mercurial позволяет вам настроить инструмент слияния так, как вам нравится. TortoiseHg поставляется с конфигурацией по умолчанию, которая ставит KDiff3 на вершину списка, но вы можете использовать другой инструмент, если хотите. Инструмент слияния - это на самом деле просто программа, которая принимает четыре имени файла: три файла для сравнения (базовый, родительский 1, родительский 2) и имя выходного файла.

Чтобы разрешить конфликты в командной строке, вам необходимо запустить подходящий инструмент для трехстороннего слияния из командной строки. Например, вы можете объединиться с vim , если хотите. (Боюсь, я ничего не знаю о vimdiff, я сам использую KDiff3.)

Если вы не хотите видеть всплывающие инструменты слияния, вы можете установить

[ui]
merge = internal:merge

, чтобы Mercurial использовал только внутреннее трехстороннее слияние. Он будет сливать файлы нормально, когда правки не конфликтуют. При возникновении конфликта файл помечается как «неразрешенный», а маркеры конфликта сохраняются в файле.

Затем вам нужно отредактировать файл вручную, чтобы получить нужную версию. Вы также можете повторно объединить и выбрать либо локальную (вашу) версию:

$ hg resolve --tool internal:local your-file

или другая версия:

$ hg resolve --tool internal:other your-file

Вы полностью перезапускаете слияние с помощью hg resolve your-file. Файл должен быть помечен как «разрешенный», прежде чем вы сможете его зафиксировать. Это сделано с hg resolve --mark your-file. См. hg resolve --list о статусе текущего слияния.

21 голосов
/ 30 мая 2012

Base - это предыдущая версия в вашей локальной системе, Parent 1 - ваши текущие изменения, parent 2 - файл с сервера.

Если вам нужно, чтобы ваши изменения были зарегистрированы, выберите B везде вобъединить меню.Если вам нужна последняя версия сервера на вашем локальном компьютере, выберите C везде в меню слияния

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...