【问题标题】:How to use Visual Studio Code as the default MergeTool for mercurial如何使用 Visual Studio Code 作为 mercurial 的默认 MergeTool
【发布时间】:2020-06-18 21:49:46
【问题描述】:

要更改默认的合并方法,需要提供.hgrc 文件的配置。 google了一下,没用。

【问题讨论】:

标签: visual-studio-code mercurial mergetool


【解决方案1】:

不知道。 VS Code 只能用作 diff-tool,不能用作 3-way mergetool

【讨论】:

    【解决方案2】:

    我假设您想使用“Visual Studio Code”的版本控制 - Merge Conflicts 功能。而且我猜你想要相同的功能,但使用 mercurial 的源代码控制。

    所以,我们要做的第一件事就是配置 mercurial 以使用 VSCode 作为合并工具。为此,我查看以下documentation

    似乎善变的人想知道 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
    

    $output 的结果是:

    file.txt(合并输出)

    <<<<<<< working copy
    foo=======
    bar>>>>>>> merge rev
    

    而 VSCode 的合并冲突解决程序无法将这部分代码检测为冲突,因为检测 =======&gt;&gt;&gt;&gt;&gt;&gt;&gt; 的代码假定它们位于行首,如下所示:

    <<<<<<< working copy
    foo
    =======
    bar
    >>>>>>> merge rev
    

    我们可以看到这个假设herehere。我认为这很好,但我不得不添加它以避免将来出现任何问题。

    给你,玩得开心。

    【讨论】:

      【解决方案3】:

      我们可以通过 vscode-hg 插件使用 vscode 作为合并工具。但问题是我们不能简单地将vscode配置为.hgrc文件中的合并工具。

      在 .hgrc 文件上将合并工具设置为 : merge,这将允许使用 vscode hg 插件合并文件。

      [ui]
      merge = :merge
      

      【讨论】:

        猜你喜欢
        • 2015-07-13
        • 1970-01-01
        • 2018-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多