git diff filter para arquivos minimizados

2

Eu tenho um arquivo JSON minimizado na minha árvore git. É um monte de dados em uma única linha, sem espaços.

Diferenças para este arquivo não são muito úteis, qualquer mudança nos dados, é claro, resulta em toda a linha sendo alterada.

Eu gostaria de poder opcionalmente dizer ao git para não diferenciar o arquivo em si, mas a saída de uma impressora bonita (como python -mjson.tool ou jq . ) para esse arquivo. / p>

Agora mesmo estou usando este comando:

diff -u <(git show HEAD:file.json | jq .) <(jq . < file.json)

Qual é a maneira correta de fazer isso?

    
por Alexander Gladysh 08.01.2014 / 11:14

4 respostas

2

A solução mais simples que eu costumo seguir é ter um código-fonte bem impresso e minificá-lo em um arquivo não rastreado durante a criação. isso é muito bom como:

  • a fonte será sempre legível.
  • não haverá alterações indesejadas nos arquivos de origem
por 12.01.2014 / 17:23
1

Eu configuraria um filtro textconv para o (s) arquivo (s) afetado (s).

Em .gitattributes, defina a ferramenta de comparação:

*.json diff=json

E em .git / config:

[diff "json"]
    textconv = "cat $1 | json_pp"

json_pp está presente na distribuição do Git para Windows, e eu tive mais sorte com isso do que com jq .

    
por 19.12.2017 / 11:27
1

Isso é o que fiz para passar por cima de uma coleção de .json arquivos e descobrir quais arquivos diferem:

for f in 'git ls-files *.json'; do
    if  ! (git cat-file -p :./$f | jq '.' -S) | cmp -s - <(cat $f | jq '.' -S); then 
        echo $f
    fi
done

se você quiser apenas ver o diff, faça o seguinte:

for f in 'git ls-files *.json'; do
    echo $f
    (git cat-file -p :./$f | jq '.' -S) | diff - <(cat $f | jq '.' -S)
done
    
por 05.07.2018 / 17:13
0

Se você é como eu e não se importa com o conteúdo dos arquivos minimizados (porque, sabe, apenas minimizou a forma de outras alterações confirmadas), você pode fazer algo para que os arquivos minimizados não embrulhe e leve cem linhas.

Tente executar isto: git config --global core.pager 'less -S'

Em seguida, seu arquivo minimizado será exibido em uma linha que desaparece convenientemente da tela.

Veja também:

link

link

    
por 05.08.2016 / 20:39

Tags