如何使用 Visual Studio 代码作为 mercurial 的默认 MergeTool
How to use Visual Studio Code as the default MergeTool for mercurial
要更改默认的合并方式,需要什么配置来提供.hgrc
文件。我尝试了 google 但它没有用。
不行。 VS Code 只能用作 diff-tool,不能用作 3-way mergetool
我假设您想使用“Visual Studio 代码”的版本控制 - Merge Conflicts 功能。而且我猜你想要相同的功能,但使用 mercurial 的源代码控制。
因此,我们要做的第一件事就是配置 mercurial 以使用 VSCode 作为合并工具。为此,我看下面documentation.
似乎 mercurial 想知道 VSCode 的注册表值以激活它。
我环顾了互联网,发现这个 gitlab Issue 有相关的密钥。
所以当前的附加配置是:
[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
砰!有效!
可能出现的问题
缺少行终止符
在测试这个配置的过程中,我遇到了一个问题,就是最后没有行终止符(\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
我们可以看到这个假设here and here。我认为它非常好,但我不得不添加它以避免任何未来的问题。
给你,玩得开心。
我们可以通过 vscode-hg 插件使用 vscode 作为合并工具。但问题是我们不能简单地将 vscode 配置为 .hgrc
文件中的合并工具。
在 .hgrc 文件上将合并工具设置为 : merge
,这将允许使用 vscode hg 插件合并文件。
[ui]
merge = :merge
要更改默认的合并方式,需要什么配置来提供.hgrc
文件。我尝试了 google 但它没有用。
不行。 VS Code 只能用作 diff-tool,不能用作 3-way mergetool
我假设您想使用“Visual Studio 代码”的版本控制 - Merge Conflicts 功能。而且我猜你想要相同的功能,但使用 mercurial 的源代码控制。
因此,我们要做的第一件事就是配置 mercurial 以使用 VSCode 作为合并工具。为此,我看下面documentation.
似乎 mercurial 想知道 VSCode 的注册表值以激活它。 我环顾了互联网,发现这个 gitlab Issue 有相关的密钥。
所以当前的附加配置是:
[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
砰!有效!
可能出现的问题
缺少行终止符
在测试这个配置的过程中,我遇到了一个问题,就是最后没有行终止符(\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
我们可以看到这个假设here and here。我认为它非常好,但我不得不添加它以避免任何未来的问题。
给你,玩得开心。
我们可以通过 vscode-hg 插件使用 vscode 作为合并工具。但问题是我们不能简单地将 vscode 配置为 .hgrc
文件中的合并工具。
在 .hgrc 文件上将合并工具设置为 : merge
,这将允许使用 vscode hg 插件合并文件。
[ui]
merge = :merge