Como usar o WinMerge como a ferramenta Diff para o Mercurial

19

Estou usando o sistema de controle de versão distribuída do Mercurial, e estou imaginando como posso configurá-lo para usar o WinMerge em vez de sua própria ferramenta de comparação interna. Eu já tenho WinMerge como a ferramenta de mesclagem, mas eu quero que o Mercurial use WinMerge quando eu digito:

hg diff

Existe alguma maneira de fazer isso, ou estou preso à ferramenta de comparação interna do Mercurial?

    
por quanticle 17.08.2009 / 06:12

3 respostas

23

Do FAQ do TortoiseHg :

Add these lines to your personal Mercurial.ini file

[extensions]
extdiff =

[extdiff]
cmd.winmerge = C:\Program Files\WinMerge\WinMergeU.exe
opts.winmerge = /e /x /u /wl

Now run the Global Settings tool. On the TortoiseHg tab, you should see winmerge available in the drop-down list for Visual Diff Command. Select winmerge, apply, then close.

This same approach can be used to add nearly any visual diff tool, but be aware that your diff tool must be able to support directory diffs if it is to be used by TortoiseHg, unless you are using release 0.8 or later.

Joel também forneceu uma solução aqui caso você execute o Mercurial no Cygwin.

Explicação dos argumentos da linha de comando do WinMerge . Resumo:

  • /e permite que você feche o WinMerge com uma única tecla Esc pressionada
  • /x fecha o WinMerge (depois de exibir um diálogo de informações) quando você iniciar uma comparação de arquivos idênticos
  • /u impede que o WinMerge adicione qualquer um dos caminhos (esquerda ou direita) à lista de Mais Usados Recentemente (MRU)
  • /wl abre o lado esquerdo como somente leitura
por 17.08.2009 / 13:58
7

É assim que funciona para mim - pura linha de comando mercurial diferente de tortoisehg

Primeiro, edite o arquivo (em janelas de 64 bits)

C: \ Arquivos de programas (x86) \ Mercurial \ Mercurial.ini

[extensions]
; must uncomment this line
extdiff =

[extdiff]
; i'm using winmerge unicode version
cmd.winmerge = C:\Program Files (x86)\WinMerge\WinMergeU.exe
; it explains winmerge command line parameters here: http://winmerge.org/docs/manual/CommandLine.html
opts.winmerge = /r /e /x /u /wl

Então, você pode usar "hg winmerge ..." em vez de "hg diff ..."

    
por 05.05.2010 / 05:40
3

Bem, as respostas dadas anteriormente não me dão efeitos desejados. Eles não permitem fazer revisões diferentes e editar no lugar (quero dizer a mesma funcionalidade que está disponível para o TortoiseSVN da caixa). Para fazer isso eu adicionei adicionalmente ao mercurial.ini esta seção:

[merge-tools]
winmerge.regkey=Software\Thingamahoochie\WinMerge\
winmerge.regname=Executable
winmerge.priority=-10
winmerge.args=/e /x /wl /ub /dl other /dr local $other $local $output
winmerge.fixeol=True
winmerge.checkchanged=True
winmerge.gui=True
winmerge.diffargs=/r /e /x /ub /wl /dl '$plabel1' /dr '$clabel' $parent $child
winmerge.diff3args=
winmerge.dirdiff=True

Isso é retirado do link

    
por 09.04.2012 / 11:31