git log -G<regex> -p
지정된 패턴과 일치하는 변경 사항에 대해 코드베이스 기록을 검색하는 훌륭한 도구입니다. 그러나 주로 관련이없는 덩어리가있는 바다의 diff / patch 출력에서 해당 덩어리를 찾는 것은 압도적 일 수 있습니다.
물론 git log
원래의 문자열 / 정규식 에 대한 출력을 검색 할 수는 있지만 관련이없는 많은 변경 사항의 시각적 소음과 방해를 줄이기 위해 거의하지 않습니다.
에 대해 읽으면 git log
, --pickaxe-all
이것이 내가 원하는 것과 정확히 반대 인 것을 알 수 있습니다. 출력을 전체 변경 세트로 넓히고 출력을 특정 덩어리로 제한하고 싶습니다.
본질적으로, diff / patch를 개별 덩어리로 "지능적으로"구문 분석 한 다음 각 덩어리에 대해 검색을 수행하고 (변경된 행만 대상으로 함) 일치하지 않는 덩어리를 버리고 출력하는 방법을 찾고 있습니다. 그렇습니다.
내가 설명한 것과 같은 도구가 있습니까? 일치 / 영향을받는 덩어리를 얻는 더 나은 접근 방법이 있습니까?
내가 한 초기 연구 ...
grep
diff / patch 출력 이 가능 하고 컨텍스트 옵션 값을 동적 (예 : 라인 수 대신 정규 표현식을 통해)으로 설정하면 충분할 수 있습니다. 그러나grep
그런 식으로 정확하게 구축되지는 않았습니다 (필요로 그 기능을 요청하지도 않습니다).patchutils 제품군을 찾았습니다. 처음에는 내 요구에 맞는 것처럼 들렸습니다. 그러나 해당
man
페이지를 읽은 후에 는 도구가 정규 표현식을 기반으로 일치하는 덩어리를 처리하지 않는 것으로 보입니다. (그러나 그들은 덩어리의 목록을 수락 할 수 있습니다 ...)마지막으로 patch의 파싱을 잘 처리하는 것처럼 보이는 splitpatch.rb가 나타 났지만 ,을 통해 패치를 읽고
stdin
, 원하는 덩어리를 일치시킨 다음 덩어리를 출력하려면 크게 보강해야합니다 .