Caleidoscópio para git difftool

18

Tentei usar o caleidoscópio para git difftoolcomparar dois ramos.

Então instalei o ksdiff e o configurei como segue no meu.gitconfig

 [diff]
     tool = kaleidoscope
 [difftool "kaleidoscope"]
     cmd = ksdiff --changeset $(cd $(dirname "$LOCAL") && pwd)/$(basename "$LOCAL") $(cd $(dirname "$MERGED") && pwd)/$(basename "$MERGED")

ao correr

git difftool myBranch otherBranch 

Eu recebo o erro cannot use duplicate files within the same file list

svassr
fonte

Respostas:

36

Eu encontrei uma maneira de configurá-lo. No próprio Kaleidoscope, no menu Kaleidoscope, há um link chamado Integration que abre uma janela de configuração para várias soluções de versão.

Janela de configuração "Integração" do caleidoscópio

Após instalar o ksdiff, clique no botão Configurar para adicionar as seguintes linhas ao seu .gitconfigarquivo.

[diff]
    tool = Kaleidoscope
[difftool "Kaleidoscope"]
  cmd = ksdiff --partial-changeset --relative-path \"$MERGED\" -- \"$LOCAL\" \"$REMOTE\"
[merge]
    tool = Kaleidoscope
[mergetool "Kaleidoscope"]
  cmd = ksdiff --merge --output \"$MERGED\" --base \"$BASE\" -- \"$LOCAL\" --snapshot \"$REMOTE\" --snapshot
  trustExitCode = true

executando o seguinte comando abrirá sucessivamente cada arquivo diferente

git difftool myBranch otherBranch  -y -t Kaleidoscope

-

Notas:

  • -yserve para evitar perguntar se queremos usar o Kaleidoscope for difftool para cada arquivo. A resposta padrão é "sim".
  • -t Kaleidoscopeé opcional aqui, pois o difftool padrão já está definido Kaleidoscopeem nosso .gitconfigarquivo.
svassr
fonte
11
No meu caso, eu também tive que adicionar [merge] tool = Kaleidoscopeao meu .gitconfig.
stigi