Em primeiro lugar, você deve instalar o Meld:
$ sudo apt-get install meld
Em seguida, configurar o git para usar o Meld como ferramenta externa para diff:
$ git config --global diff.external meld
Se agora você for em um diretório versionado com git e der um git diff irá ocorrer um erro como este:
$ git diff arquivo_qualquer
external diff died, stopping at arquivo_qualquer
Esse erro ocorre pelo fato do Git mandar 7 parâmetros para a ferramenta externa de diff, enquanto o Meld recebe apenas dois deles (os nomes dos arquivos para comparar).
Uma maneira de contornar isso é escrever um script para formatar os parâmetros antes de manda-los para o Meld. Para isso, crie em qualquer lugar (recomendo em ~/.config) um script em shell com qualquer nome (recomendo git_meld_diff.sh) contendo o seguinte conteúdo:
#!/bin/bash
meld "$5" "$2"
Agora podemos configurar o Git para para fazer o diff usando o script que criamos (lembre-se de mudar o caminho e o nome do arquivo para o seu caso)
$ git config --global diff.external /home/hugo/.config/git_meld_diff.sh
Agora, quando você fizer o diff, o Meld irá abrir corretamente e você terá um diff como o presentado na imagem.
Este post é uma adaptação deste post do Nathan Hoad.
Nota: Este post estava no meu blog antigo e não tive como trazer os comentários. Como os comentários foram relevantes, seguem aqui:
- Hugo Lopes Tavares
E aí chará!
Cara, eu prefiro ver na ordem inversa: a versão modificada e a versão original, acho mais normal.
Outra coisa que dá pra fazer é não usar o Python, né:
#!/bin/bash
meld $5 $2 # a versão atual e depois a original
Abração!
- Hugo Lopes Tavares
Só uma correção:
#!/bin/bash
meld "$5" "$2"
Senão não consegue fazer o meld com arquivos que tenham espaço no nome.
- Hugo Maia Vieira
Fala chará!
Realmente fica melhor ver na ordem: versão modificada - versão original.
Nem tinha pensado em usar Shell. Muito mais prático.
Valeu pelas dicas Hugo!
Abraço!
Obs.: Como mudei o post, fica aqui a versão anterior sem as modificações que Hugo comentou:
Antes usava um script em python com o conteúdo:
#!/usr/bin/python
import sys
import os
os.system('meld "%s" "%s"' % (sys.argv[2], sys.argv[5]))
[ ]'s
Também é possível utilizar o meld momentaneamente com o seguinte comando:
ResponderExcluirgit -c diff.external=CAMINHO_DO_SCRIPT_DO_MELD diff ARQUIVO