2016-10-22 4 views
1

프로젝트에 변경 로그 텍스트 파일이 있습니다. 이 파일에서 2 개의 태그 사이에 변경 사항 목록을 가져오고 싶습니다. I는 (+로 시작하는) 추가로 표시된 모든 라인을 수신하여 출력으로서git diff를 사용하여 추가 된 행을 어떻게 찾을 수 있습니까?

git diff tag1..tag2 file | grep -v -e "+++ b/file" -e "@@" | grep "+" 

:이 명령을 준비했다. 그러나 그것들 사이에 이전에 존재했지만, 언급 된 태그 사이에서 수정 된 줄이있을 수 있습니다 (예 : 수정 된 맞춤법 오류). 새 라인 또는 수정 된 라인 만 필터링 할 수있는 옵션이 있습니까? 또는 라인 수정의 % 조건을 출력으로 인쇄하도록 제어 할 수있는 옵션이 있습니까?

+0

알다시피, git는 줄을 삭제 된 줄로 바꾸고 새 줄을 추가했습니다. "변경된"회선 표시기가 없습니다. 그러나 삭제 된 행과 추가 된 행이 같은 행 번호에 있음을 알 수 있습니다. – Imaginaroom

+0

소리가 까다 롭습니다. 파일에서 이동되었지만 변경되지 않은 행에 대해 수행하려는 작업은 무엇입니까? – melpomene

+0

그 줄은 파일의 다른 위치에있을 것이므로, 줄을 새로운 줄로 처리 할 것입니다. – Yama

답변

0

불행히도 나는 만족스런 대답을 찾을 수 없었고 (다른 곳에서도 마찬가지 였음) 필요한 스크립트를 직접 작성해야했습니다.

0

힘내는 그 자체로하지 않으며, 간단한 구문보다는 의미론에 신경 쓰면 일반적으로 어려운 문제입니다. Git은 후 처리 필터 인 diff-highlight을 제공한다. 이 Perl 스크립트 내의 코드는 사용자가 원하는 구문 분석을 수행하므로 사용자가 원하는 구문을 생성하도록 수정할 수 있습니다.

diff 강조 표시 할 원본을 보려면 https://github.com/git/git/tree/master/contrib/diff-highlight을 참조하십시오. 이 종류의 분석과 관련된 의미 론적 문제에 대한 노트를 보려면 README를 읽어보십시오. as of Git version 2.9에 주목하십시오. 하이라이트 스크립트는 Git의 나머지 부분과 함께 설치되기 때문에 기여한 소스 영역 밖으로 빼낼 필요가 없습니다.

관련 문제