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

Как разрешить этот Меркуриальный конфликт?

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

KDiff3

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

4b9b3361

Ответ 1

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

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

Mercurial позволяет вам настроить свой инструмент слияния любым удобным вам способом. TortoiseHg поставляется с конфигурацией по умолчанию, которая помещает KDiff3 в верхнюю часть списка, но вы можете использовать другой инструмент, если хотите. Инструмент слияния - это просто программа, которая принимает четыре имени файла: три файла для сравнения (base, parent 1, parent 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 для состояния текущего слияния.

Ответ 2

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

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