Como posso obter o maior retorno dos meus investimentos com o comando “diff”?

9

Eu tentei usar o comando linux diff no passado sem muita sorte ou paciência. Eu normalmente acabo usando um utilitário GUI como DiffMerge ou Kdiff.

Recentemente, comecei a tentar usar diff novamente para comparar arquivos em sistemas remotos via ssh, e descobri que a opção -y / --side-by-side é muito útil, mas ainda sinto que não estou aproveitando ao máximo isso utilitário.

Estou curioso para saber como conseguir as seguintes coisas:

  1. Realce alterações ou use códigos de cores para tornar a saída mais legível
  2. Mesclar - Selecione linhas com diferenças e efetue as alterações em um dos arquivos

Além disso, eu não encontrei muitos bons exemplos quando pesquisei, então se você tem alguns segredos do linux-fu para tirar o máximo proveito do diff, você poderia compartilhar? eu estarei principalmente comparando arquivos de configuração baseados em texto, mas quaisquer truques e dicas seriam maravilhosos.

Para referência - O utilitário DiffMerge mostra facilmente as alterações lado a lado com destaque de cores. Os ícones na parte superior permitem alternar entre as exibições de "mostrar tudo", "mostrar diferenças" e "mostrar diferenças com o contexto". Adoraria algumas dessas funcionalidades no prompt de comando.

ps: Eu também devo observar que uma outra opção que eu acho bastante útil é --suppress-common-lines que eu aprendi sobre isso post de blog conciso e legível .

    
por cwd 23.11.2011 / 17:07

4 respostas

9

Em nenhuma sequência particular:

  • meld é um ótimo programa de comparação que faz ótimos diffs e fusões de três vias.
  • git config --global merge.conflictstyle diff3 obtém uma saída de mesclagem de três vias para uso com ferramentas como meld .
  • wdiff faz palavra diffs, muito bom se colorido : %código%
  • Para minimizar a sujeira na saída wdiff -w "$(tput bold;tput setaf 1)" -x "$(tput sgr0)" -y "$(tput bold;tput setaf 2)" -z "$(tput sgr0)" ... , geralmente uso a opção diff ( --ignore-all-space )
  • -w * faz o que diz no rótulo.
  • diff-ignore-moved-lines * pode ser usado para diferenciar apenas as linhas que correspondem em determinados campos.

* Isenção de responsabilidade: Sou o autor e desenvolvi-os para ajudar na CLI e na GUI, para diferenciar e mesclar.

    
por 23.11.2011 / 17:27
5

Eu descobri que o vimdiff é muito útil.

    
por 19.12.2011 / 21:35
3

Para colorir o diff, você deve procurar pelo link . Este é apenas um wrapper em torno do diff e, como tal, todas as opções de comando ainda funcionam.

Caso você tenha o Ubuntu basta escrever:

    # sudo apt-get install colordiff

Correndo o risco de não atender ao seu caso de uso, git é um VCS muito agradável que se integra bem com muitas ferramentas de difusão e mesclagem (linha de comando e GUI). Experimente se for uma opção.

    
por 23.11.2011 / 20:41
1

Experimente sdiff

diff também tem opções ( -e ou -ed ) para criar um script de mesclagem para uso com ed

sdiff , diff e ed devem fazer parte da sua concha onde quer que você vá.

Seu software de controle de versão provavelmente também possui uma ferramenta diff e merge incorporada.

    
por 19.12.2011 / 23:27