최소화 된 파일을위한 git diff 필터


2

내 자식 트리에 최소화 된 JSON 파일이 있습니다. 공백없이 한 줄에있는 많은 데이터입니다.

이 파일의 차이는 그다지 유용하지 않습니다. 데이터를 변경하면 물론 전체 줄이 변경됩니다.

선택적으로 git에게 파일 자체가 아니라 그 파일에 대한 예쁜 프린터 ( python -mjson.tool또는 같은 jq .)의 출력을 diff 하도록 지시하고 싶습니다 .

지금 나는이 명령을 사용하고 있습니다 :

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

이를 수행하는 올바른 방법은 무엇입니까?

답변:


2

내가 일반적으로 따르는 가장 간단한 해결책은 꽤 인쇄 된 소스 코드를 가지고 빌드하는 동안 추적되지 않은 파일로 축소하는 것입니다. 이것은 다음과 같이 꽤 좋습니다.

  • 소스는 항상 읽을 수 있습니다.
  • 소스 파일에 원치 않는 변경 사항이 없습니다

1

영향을받는 파일에 git textconv 필터를 설정합니다 .

.gitattributes에서 diff 도구를 설정하십시오.

*.json diff=json

그리고 .git / config에서 :

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

json_pp는 Git for Windows 배포판에 있으며, 이것보다 더 운이 좋았습니다 jq.


1

이것은 .json파일 모음을 살펴보고 어떤 파일이 다른지 찾기 위해 수행 한 작업입니다 .

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

diff 만보고 싶다면 다음과 같이하십시오.

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

0

당신이 나와 같고 실제로 최소화 된 파일의 내용에 관심이 없다면 (약간의 다른 커밋 된 변경 사항을 최소화하기 때문에) 최소화 된 파일이 줄 바꿈되지 않도록 무언가를 할 수 있습니다 백 줄까지.

이것을 실행하십시오 : git config --global core.pager 'less -S'

그러면 최소화 된 파일이 한 줄에 나타나 화면에서 사라집니다.

참조 :

https://stackoverflow.com/a/6697519/1483861

https://superuser.com/a/272826/454133

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.