Как использовать код Visual Studio в качестве MergeTool по умолчанию для Mercurial - PullRequest
0 голосов
/ 06 марта 2020

Чтобы изменить метод слияния по умолчанию, какая конфигурация необходима для предоставления файла .hgrc. Я попробовал Google, но он не работал.

Ответы [ 2 ]

2 голосов
/ 27 марта 2020

Решение

Я предполагаю, что вы хотели использовать контроль версий "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

Мы можем видеть это предположение здесь и здесь . Я думаю, что это прекрасно, но мне пришлось добавить это, чтобы избежать каких-либо проблем в будущем.

Вот, пожалуйста, повеселитесь.

0 голосов
/ 07 марта 2020

никак. VS Code можно использовать только как diff-инструмент, а не как 3-way mergetool

...