SVN 저장소의 파일에서 누가 라인을 삭제했는지 찾는 방법은 무엇입니까?


12

나는 매우 큰 프로젝트 (10000+ 버전)에서 일하고 때로는 다른 사용자 중 누가 파일의 일부 줄을 삭제했는지 알아야합니다. 그렇게 할 방법이 있습니까? 내가 할 수있는 svn blame라인이 그 개정에 있는지 확인하기 위해 개정 번호와 함께, 다음 라인이 사라 인 개정에보고하고 수정을 저지른 사람 볼 수 있지만, 그 절차는 큰 프로젝트와 절름발이입니다.

더 똑똑한 방법이 있습니까?

답변:


5

위의 제안대로 바이너리 검색을 사용하지 않기 때문에 자동으로 필요한 것은 아니지만 빠르지는 않습니다.

svn log FILE | egrep '^r[0-9]' | sed -e 's/ .*//' | while read rev; do echo $rev ; svn cat FILE -"$rev" | grep "case STRING" && break  ; done 

5

파일의 기록을 확인하고 해당 줄이있는 개정을 신속하게 찾은 다음 HEAD와 해당 개정 사이를 비난합니다.

파일이 처음부터 100 개의 개정판을 통과 한 경우 해당 줄을 찾는 개정판을 이진 검색하면 10 개 이상의 다른 개정판을 볼 필요가 없습니다.


나는 의견을 보지 못한다. 그것은 모두 나에게 좋은 조언처럼 보인다. : P
Phoshi

1
이것은 나의 접근 방식과 동일합니다. 10 개정판보다 더 간단하고 빠른 것을 원합니다.
Ivan Petrushev

... 10 개정입니다. 위의 질문을 게시 할 때 지금까지 할 수 있습니다. 이것이 당신이 다시해야 할 일이 아니면 내 의견을 무시하십시오.
ta.speot.is는

2
그렇습니다. 단발 촬영에는 탁월하지만 정기적으로 자주 사용할 수있는 것이 필요합니다.
Ivan Petrushev

3

svn log --diff열 0에서 "-"로 삭제를 식별합니다. "r"에 대한 grep도 개정판을 볼 수 있습니다.

% svn log --diff src/fozbo.cpp -r22222:HEAD | grep -e '^r' -e '^-.*xyzzy'
r22222 | jruser | 2016-07-19 20:16:07 -0400 (Tue, 19 Jul 2016) | 1 line
-   else if ( password== "xyzzy") {

이 또한 svn log --search그러나 그것은 단지가 커밋 메시지를 검색합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.