Linux에서는 svn diff 명령을 직접 사용하여 코드 수정 사항을 보는 것이 매우 어려우므로 인터넷에서 더 나은 솔루션을 검색했습니다. 특히 svn diff의 코드 보기 도구로 vimdiff를 사용하는 것입니다. vim을 사용하는 데 익숙해졌습니다. 정말 편리합니다.
svn diff 명령을 사용하여 특정 파일의 수정 사항을 비교하는 경우, 예를 들어 다음 명령을 실행합니다:
$ svn diff -r4420 ngx_http_limit_req_module.c
그러면 다음 명령이 실제로 기본 diff 프로그램으로 전송됩니다:
-u -L ngx_http_limit_req_module.c(개정 4420) -L ngx_http_limit_req_module.c(작업 복사본) .svn/tmp/tempfile.tmp ngx_http_limit_req_module.c
svn 공식 FAQ의 svn diff 설명(중국어, 영어):
외부 diff 명령을 사용하면 Subversion은 매우 복잡한 명령줄을 생성합니다. 첫 번째 매개변수는 특정 --diff-cmd이고 그 뒤에 특정 --extensions가 옵니다(빈 -- 기호를 사용할 경우 확장은 무시되지만). 또는 --extensions가 지정되지 않거나 --extensions가 비어 있는 경우 '-u' 매개변수입니다. 세 번째 및 네 번째 인수의 경우 Subversion은 "-L"과 첫 번째 파일의 레이블(예: ""project_issues.html(개정 11209)")을 전달합니다. 다섯 번째 및 여섯 번째 인수는 또 다른 "-L"이며 두 번째 파일의 레이블입니다. 일곱 번째와 여덟 번째 인수는 각각 첫 번째와 두 번째 파일의 이름입니다(예: ".svn/text-base/project_issues.html.svn-base" 및 ".svn/tmp/project_issues). .html.tmp")
diff의 내부 호출 명령을 이해하고 나면 vimdiff를 diff 프로그램으로 사용하는 것은 비교적 간단합니다.
vimdiff가 두 파일을 비교할 때 위 diff 내부 명령의 7번째와 8번째 매개변수인 두 파일의 경로와 파일 이름만 알면 됩니다.
또한 diff 내부 명령에 매개변수가 너무 많아 --diff-cmd로 vimdiff를 직접 호출하는 것이 불가능하다고 설명합니다(명령어는 다음과 같습니다).
$ svn diff --diff-cmd vimdiff -r4420 ngx_http_limit_req_module.c그래서 우리는 다른 스크립트를 직접 작성해야 합니다. 이 스크립트를 diff 프로그램으로 사용하고 diff의 내부 명령을 얻은 다음 7번째와 8번째 매개변수만 가져와 vimdiff에 전달하면 문제를 해결할 수 있습니다. 매개변수가 많은 문제 문제.
스크립트(diffwrap.sh)는 다음과 같습니다.
으아아아
또한 svn은 구성 파일에서 기본 diff 프로그램을 수정하는 기능도 제공하므로 svn diff를 사용할 때마다 --diff-cmd를 지정할 필요가 없습니다.~/.subversion/config를 수정하고 다음 구성 줄을 찾으세요.
# diff-cmd = diff_program (diff, gdiff 등)위 스크립트에 경로를 추가하세요. 예를 들어
로 변경하세요.
diff-cmd = /usr/local/bin/diffwrap.sh향후에는 svn diff 명령을 사용하면 기본적으로 vimdiff가 열려 두 파일을 비교할 수 있습니다.
렌더링:
위 내용은 svn diff를 vimdiff로 교체: 코드 비교 도구의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!