2010-07-31 5 views
1

SVN의 해당 파일에 대한 여러 개정 중 특정 파일에서 한 줄의 제거를 추적하고 싶습니다.SVN에 특정 라인이 포함 된 개정판을 찾는 방법

다양한 리비전/diff 파일을보고 제거하려고 시도했지만 불쾌한 수정 버전을 찾을 수 없었습니다. 어떻게 우리는 svn 명령을 사용하여 이것을합니까?

답변

2

Linux를 사용하고 있고 어떤 파일을보고 있는지 알고있는 경우 해당 쉘 스크립트를 사용하여 해당 파일의 모든 개정판을 출력 할 수 있습니다.

#!/bin/bash 
svn log "$1" -q | grep -oE r[0-9]+ | xargs -t -n1 -r -d '\n' svn cat "$1" -r 

작업 스크립트 파일 이름 또는 저장소 URL을 매개 변수로이 스크립트에 전달하십시오.

--incremental 스위치없이 svnadmin dump 스위치를 사용하여 다른 모든 것이 실패하고 일반 덤프를 수행하는 경우 최신 덤프 파일의 텍스트를 grep 할 수 있습니다.

비 증분 덤프에는 모든 파일의 각 개정마다 전체 텍스트가 들어 있습니다.

2

나는 이것이 꽤 아니지만 비교적 빠르다는 것을 안다 : 나는 단지 "인간"이진 검색을 사용하여 그 파일에 대한 svn 수정본을 수동으로 검토 할 것을 제안 할 것이다. 진행할 2000 개정판이있는 경우 물리적 개정판을 12 개정판에서 검토하여 위반 내용을 수정해야합니다.

라인이 r1000에 추가되었고 최신 개정판이 r3000이라고 가정 해 봅시다. 그런 다음 r2000을 확인하고 그곳에 여전히 선이 있으면 r2000과 r3000 사이의 개정판 (예 : r2500)을 선택하십시오. 그렇지 않으면 r1000과 r2000 (즉 r1500) 사이의 개정판을 선택하십시오. 이 수동 검색 알고리즘을 계속 사용하여 범위를 좁히십시오. 2000 개정판의 창을 통해 12 번의 반복 작업을해야합니다. (2000, 1000, 500, 250, 125, 64, 32, 16, 8, 4, 2, 1, 빙고!)

관련 문제