O Mercurial continua a iniciar o FileMerge em vez do kdiff3

2

Eu quero mesclar algumas coisas no mercurial usando o kdiff3. Por isso instalei o kdiff3 e adicionei o seguinte a ~/.hgrc :

[extdiff]
cmd.kdiff3 =

[merge-tools]
kdiff3.args = $base $local $other -o $output

Mas o Mercurial continua chamando o FileMerge como uma ferramenta de mesclagem. Eu verifiquei se o kdiff3 está funcionando. Chamá-lo de holofotes abriu-o. Então chamei-o da linha de comando para verificar se o HG não é capaz de chamá-lo, mas isso também funcionou. Então eu encontrei em algum lugar a dica para passar o caminho completo no .hgrc :

[extdiff]
cmd.kdiff3 = /Applications/kdiff3.app/Contents/MacOS/kdiff3

Mas isso também não ajudou. Também não há mensagem de erro do kdiff3 quando o Mercurial deseja abrir a ferramenta de mesclagem, apenas alguns erros estranhos do FileMerge.

A pergunta é: Por que o Mercurial está se recusando a abrir o kdiff3?

    
por PVitt 24.01.2016 / 18:50

1 resposta

2

Graças aos esforços intermináveis de um dos usuários mais educados aqui na troca de pilha, eu finalmente descobri que o wiki mercurial parece estar desatualizado. ele diz:

Add to ~/.hgrc:

[extensions] 
hgext.extdiff =

[extdiff]
cmd.kdiff3 =

[merge-tools]
kdiff3.args = $base $local $other -o $output

A extensão do extdiff não é necessária, pois não quero definir um novo comando hg kdiff3 aqui.

Mas o Mercurial tem mais algumas configurações para a ferramenta de mesclagem:

[ui]
merge = kdiff3

Em relação à ajuda do Mercurial em ferramentas de mesclagem , a configuração ui.merge não deve ser necessária, pois especificamente definir uma configuração de ferramentas de mesclagem:

Mercurial uses these rules when deciding which merge tool to use:

  1. If a tool has been specified with the --tool option to merge or resolve, it is used. If it is the name of a tool in the merge-tools configuration, its configuration is used. Otherwise the specified tool must be executable by the shell.
  2. If the "HGMERGE" environment variable is present, its value is used and must be executable by the shell.
  3. If the filename of the file to be merged matches any of the patterns in the merge-patterns configuration section, the first usable merge tool corresponding to a matching pattern is used. Here, binary capabilities of the merge tool are not considered.
  4. If ui.merge is set it will be considered next. If the value is not the name of a configured tool, the specified value is used and must be executable by the shell. Otherwise the named tool is used if it is usable.
  5. If any usable merge tools are present in the merge-tools configuration section, the one with the highest priority is used.
  6. If a program named "hgmerge" can be found on the system, it is used - but it will by default not be used for symlinks and binary files.
  7. If the file to be merged is not binary and is not a symlink, then internal ":merge" is used.
  8. The merge of the file fails and must be resolved before commit.

De alguma forma, tenho a sensação de que o Mercurial mudou seu comportamento aqui (ou alguma outra parte do meu sistema), porque em todas as máquinas em que usei o kdiff3, não tenho a última configuração no meu .hgrc. No entanto, adicionar ui.merge faz o truque.

    
por 25.01.2016 / 13:13