2008-11-16 2 views
5

2 개의 파일 리비전이 주어지면 추가/수정/삭제 된 행 수를 알고 싶습니다. 수천 개의 파일 전체 저장소에 대해이 정보를 갖고 싶습니다. 내가 ~ NewRevision ~ OldRevision ~ ~ 수정을 추가했습니다 ~이 리비전 간의 변경 통계를 확인하는 방법

삭제 창에

샘플 출력

파일을하고 있어요

총 svn의 초보자에게 나처럼 스크립트 또는 도구로 나를 가리킨하세요 file1.c에서 ~ # 11 ~ # 10 ~ 1 ~ 2 ~ 0

file1.c에서 ~ # 2 ~ # 1 ~ 2 ~ 2 0 ~

답변

4

서브 버전이 아주 좋은은 diff 도구 INTEG 그 안에 평가. (예를 들어, http://www.mycode.org/svn/trunk) URL은 저장소의 URL입니다

svn diff -rOldRevision:NewRevision URL 

: 나는 다음과 같은 명령을 사용합니다. 찾고있는 형식으로 diff 출력을 형식화하지 않지만 두 파일 버전간에 각 파일이 어떻게 변경되었는지 보여줍니다.

형식을 지정하기 위해 grep을 사용하여 각 파일에서 추가 및 빼기가 몇 개인 지 계산할 수 있습니다.

희망이 도움이됩니다.

2

SVN (또는 유사한 도구)은 수정 된 선과 삭제 된 선과 다른 것으로 대체 된 선을 구분하지 않습니다. 그러나 최선의 방법은 diff (jordan002가 말한 것)를 얻은 다음 + 또는 -로 시작하는 줄을 검색하는 것입니다. 모든 -에 대해 한 줄을 삭제했습니다. 모든 +에 대해 줄을 추가했습니다 (svn이 Unix diff가 설치된 시스템에서 svn diff --diff-cmd diff -x -w -x -u -rOldRev:NewRev으로 diff에 공백을 무시하도록 할 수 있습니다). 그런 다음 비교할 수 있습니다. 통합 diff는 @@로 시작하는 줄로 구분 된 파일 (변경된 파일의 다른 부분)로 구성되며 삭제되거나 추가 된 줄이 적은 줄이 변경된 줄, 추가 된 각 행에 대해 행크에서 제거 된 것보다 더 많은 행이 추가되었고, 행마다 제거 된 행마다 행이 삭제되었습니다. 완벽하지는 않지만 평가에는 비교적 좋습니다.

한 가지 더 알려드립니다. 프로그래머를 평가하는 데이 방법을 사용하는 경우주의하십시오. LOC는 상대적인 효율성을 측정하는 훌륭한 방법이 아닙니다.

+0

누가 위의 응답 중 하나를 스크립팅하는 것이 좋을까요? 최소 100 개의 파일에 대한 데이터를 가져와야합니다. [유료 작업으로 광고해야하는지 알려주세요] –

1

"선택한 줄에서 얼마나 많은 줄이 제거되었거나 추가되었거나 변경 되었습니까?"와 같은 작업도 해결하려고했습니다. 그래서 간단한 쉘 스크립트를 작성했습니다 (Linux 전용). 코드 수정에 대한 몇 가지 통계를 수집합니다. 자세한 내용 및 공유 스크립트 당신이 여기에서 찾을 수 있습니다 : http://cyber-fall.blogspot.com/2011/10/tools-linux-svn-generate-statistic.html

은 당신과 다른 사람들에게 도움이되기를 바랍니다!

관련 문제