Решение
Я предполагаю, что вы хотели использовать контроль версий "Visual Studio Code" - Слияние конфликтов . И я полагаю, что вам нужна та же функция, но с управлением исходным кодом mercurial.
Итак, первое, что нам нужно сделать, это настроить mercurial для использования VSCode в качестве инструмента слияния. Для этого я просматриваю следующую документацию .
Похоже, что mercurial хочет узнать значение реестра VSCode для его активации. Я осмотрел inte rnet и обнаружил этот выпуск gitlab с соответствующими ключами.
Итак, текущая дополнительная конфигурация:
[merge-tools]
vscode.regkey=SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{EA457B21-F73E-494C-ACAB-524FDE069978}_is1
vscode.regname=DisplayIcon
vscode.args= --wait $output
vscode.binary=False
vscode.gui=True
vscode.checkconflicts=True
vscode.premerge=keep
[extensions]
extdiff=
[merge-patterns]
*.*=vscode
[ui]
merge= :vscode
BAM! Работает!
Возможные проблемы
Отсутствует терминатор строки
Во время тестирования этой конфигурации я столкнулся с проблемой при конфликте, в котором нет конца строки (\ n) в конце.
Примечание: в конце файла нет '\ n'
file.txt (ветвь 'foo')
foo
file.txt (ветвь 'bar')
bar
Результат $output
:
file.txt (вывод слияния)
<<<<<<< working copy
foo=======
bar>>>>>>> merge rev
и средство разрешения конфликтов слияния VSCode не может обнаружить эту часть кода как конфликт, потому что код, который обнаруживает =======
и >>>>>>>
, предполагает, что они находятся в начале строки, как эта:
<<<<<<< working copy
foo
=======
bar
>>>>>>> merge rev
Мы можем видеть это предположение здесь и здесь . Я думаю, что это прекрасно, но мне пришлось добавить это, чтобы избежать каких-либо проблем в будущем.
Вот, пожалуйста, повеселитесь.