Subversion 저장소에서 특정 코드 줄에 대한 변경 내역을 볼 수 있습니까?
예를 들어 특정 문이 추가 된시기 또는 해당 문이 변경된시기를 볼 수 있기를 원합니다. 해당 줄 번호가 더 이상 동일하지 않더라도 말입니다.
답변:
Subversion에서 시간을 통해 진술을 추적하는 방법을 모릅니다.
그러나 파일의 특정 행이를 사용하여 마지막으로 변경된시기를 확인하는 것은 간단 svn blame
합니다. SVNBook 확인 : svn blame
참조 :
개요
svn blame TARGET[@REV]...
기술
지정된 파일 또는 URL에 대한 작성자 및 개정 정보를 인라인으로 표시합니다. 텍스트의 각 줄은 처음에 작성자 (사용자 이름)와 해당 줄의 마지막 변경에 대한 개정 번호로 주석 처리됩니다.
에서 TortoiseSVN을의 클라이언트를 할 수있는 아주 좋은 기능이있다 :
두 번째 기능은 행에 대한 마지막 수정 이전에 주석이 달린 개정판을 표시합니다. 이 기능을 반복적으로 사용하면 특정 라인의 기록을 추적 할 수 있습니다.
이는 두 단계로 수행 할 수 있습니다.
svn blame /path/to/your/file > blame.tmp
grep "your_line_of_text" blame.tmp
blame.tmp 파일이 필요하지 않은 경우 나중에 삭제할 수 있습니다.
원칙적으로 간단한 스크립트는 거의 동일한 스크립트 언어로 작성할 수 있습니다.
여기서 핵심은 얼마나 많은 역사가 필요한지입니다. 다른 사람들이 지적했듯이 짧은 대답은 다음과 같습니다 svn blame
(자세한 내용 svn help blame
은 참조). 역사상 먼 옛날에 이르렀거나 중요한 변화를 다루고 있다면이 명령 하나 이상이 필요할 것입니다.
나는 이것을 직접해야했고, 여기에서 (ye ole) 스레드를 찾았습니다. CLI
특히 API가 변경된 경우 (예 : 다른 사람의 매우 오래된 작업 (브랜치가 아님)을 최신 버전을 기반으로 기능 브랜치로 다시 포팅하는 동안) 을 사용하여 해결하기 위해 제가 한 작업은 다음과 같습니다 . 날짜 트렁크). 예를 들어 함수 이름이 어떤 함수를 호출해야하는지 명확하지 않은 곳으로 충분히 변경되었습니다.
다음 명령을 사용하면 "fileName.h"파일에서 변경된 내용이있는 커밋을 페이지로 이동하고 해당 개정 번호를 볼 수 있습니다 (참고 : svn 로그 텍스트에 따라 다소 컨텍스트에 대해 '10'을 변경해야 할 수 있습니다. ).
svn log | grep -C 10 "fileName.h" | less
이 파일이 수정 된 개정 목록이 생성됩니다.
그런 다음 관심있는 수정 사항으로 범위를 좁히기 위해 blame
(또는 다른 사람들이 지적했듯이) 사용하는 간단한 문제였습니다 annotate
.
cd trunk
svn blame fileName.h@r35948 | less
예를 들어 관심있는 개정판이 35948임을 발견했습니다.
비난을 통해 관심있는 개정판을 찾았 으면 SVN 도구를 활용하기 위해 diff를 생성 할 수 있습니다.
svn diff -r35948:PREV fileName.h
시각적 차이가 있으면 최신 / 업데이트 된 API 이름으로 이전 API 이름을 훨씬 쉽게 식별 할 수 있습니다.
grep
경우 이전 API / 함수 이름에 대해 " func_FindParm을 func_GetParm으로 변경 "과 같은 주석을 찾을 수도 있습니다 . .
Eclipse 에서는 SVN 주석보기를 사용하여 코드의 각 줄이 언제 커밋되었는지 알 수 있습니다. 또는 파일 → 팀 → 주석 표시 ...를 마우스 오른쪽 버튼으로 클릭합니다 .
svn annotate
AKA SVN의 비난 에서 TortoiseSVN을 .