SVN 저장소에 커밋 한 모든 사용자 목록


10

주어진 SVN 저장소에 대해 해당 저장소에 커밋 한 모든 사용자의 목록을 결정해야합니다. 이 저장소는 SVN 서버에서 유일한 저장소는 아니지만 목록은 해당 저장소로 제한되어야합니다.


svn log변경 사항을 커밋 한 사용자 를 파싱 할 수 있습니까 ? 아니면 repo를 체크 아웃하는 것이 옵션이 아닌가?
물리학 마이클

또한 파이썬이 있습니까? =)
물리학 마이클

답변:


19

파이썬 파싱을 다시 작성하기 시작하면서 요청한 것을 수행하는 훨씬 더 좋은 방법을 깨달았습니다 (주말과 평일 제출 비율을 계산하여 인생이없는 사람을 알기 위해 제출 날짜와 이름을 파싱했습니다!)

리포지토리를 확인한 다음 이동하여 실행하십시오.

svn log | grep '^r[0-9]' | awk '{print $3}' | sort | uniq

커밋 된 모든 변경 사항의 목록을 가져오고 개정 및 번호 ( r[12341] | author | date-and-stuff...)로 시작하는 줄을 greps 하고 세 번째 필드 (작성자)를 인쇄하고 저자를 정렬하고 중복을 제거합니다.


@ user12889 : 천만에요. 적절한 때에 올바른 질문을 보았습니다.
물리학 마이클

이름 필드에 공백이있는 값 (내 경우에는 사용자가 커밋 한 값 (no author)) -F ' [|] '이 awk에 추가 되면 전체 이름이 붙습니다 svn log | grep '^r[0-9]' | awk -F ' [|] ' '{print $2}' | sort | uniq.
Quinn Comendant

3

@ vgm64의 단순성과 결합 된 공백이있는 사용자 이름에 대한 간단한 형태의 @DrummerB 답변

svn log -q | gawk -F "|" '/^r[0-9]/ { print $2 }' | sort -u


@DrummerB의 버전은 아무것도 출력하지 않는 반면
NickG

2

vgm64의 대답은 좋지만 공백이 포함 된 이름에는 적합하지 않습니다. 나는 그것을 바꿨다.

svn log | grep '^r\do*' | sed 's_^r[0-9]* | \([^|]*\) | .*$_\1_g' | sort | uniq

1

이 스레드가 오래되었다는 것을 알고 있지만 SVN을 Git으로 변환하는 자습서가 링크되어 있으므로 Authors.txt 파일을 생성하는 명령을 추가합니다.

svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > Authors.txt

가져온 SVN이거나 Not a working copy오류가 발생하면 file:///tmp/svn-repo다음 을 추가하여 SVN 폴더의 로컬 경로를 지정할 수 있습니다svn log -q

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