2012-07-05 1 views
6

특정 버전의 수정본 (또는 모두)에 대해 하나의 파일 (이상적으로는 파일 세트)의 diff를 검색하고 싶습니다. 텍스트를 검색 할 수있는 diff 보고서를 찾고 있습니다. 충분히 잘 작동파일의 특정 문자열에 대한 diff 집합을 검색하는 방법이 있습니까?

hg diff -r 0:47131 .\TheFile.cs | grep 'theSearch' -Context 50

확인을, 그러나 포함 얼마나 많은 컨텍스트를 결정하는 첫 번째와 마지막 개정을 찾는뿐만 아니라 문제입니다 :이 있어요. 나는 이것을 더 잘 자동화 할 수 있지만 약간의 작업이 될 것으로 보인다.

더 나은 방법을 찾을 수있는 도구가 있는지 궁금합니다. hg 서버에 대한 diff 보고서 웹 페이지일까요?

답변

10

을 사용하여 전체 repo 기록을 검색 할 수 있습니다. 예를 들어

:

hg grep --all --include .\TheFile.cs 'theSearch' 

하면 REPO의 모든 개정에 'theSearch'의 모든 인스턴스를 찾을 수 있습니다. --all 플래그가 없으면 문자열을 포함하는 첫 번째 개정에서 중지됩니다.

1

hg grep은 모든 일치하는 개정판의 전체 파일 내용을 검색한다고 생각했습니다. 만은 diff를 검색 할 경우 반면에, 이런 식으로 뭔가를 시도 :이 자신의 DIFF에서 "TODO"를 포함하는 개정을 나열합니다

hg log --template "{ifcontains('TODO', diff(), '{node} {desc}\n', '')}"

. 이는 diff 컨텍스트 (+/- 3 행)뿐만 아니라 제거 된 행을 검색하므로 완벽하지는 않습니다.

args를 사용하여 diff() - hg help template 참조 - 및 rev 세트 (-r ...)를 사용하여 추가로 제한 할 수 있습니다.

이 방법은 두 변경 집합에 전체 repo를 분산시키는 대신 각 변경 집합을 하나씩 차등화하기 때문에 hg diff | grep 접근 방법을 사용하는 것보다 낫습니다. 예를 들어 revsets를 사용하여 병합 개정을 필터링 할 수 있습니다.

+0

' '{노드} {desc} \ n ''이 더 유용 할 것입니다. IMO – arhak

+0

@arhak 감사합니다. –

관련 문제