9

For a given SVN repository I need to determine a list of all users who ever committed anything to that repository. This repository is not the only one on the SVN server, but the list should be restricted to that repository.

2
  • Can you parse svn log for the users that have committed changes? Or is checking out the repo not an option? Apr 13, 2010 at 4:41
  • Also, do you have python? =) Apr 13, 2010 at 4:42

4 Answers 4

18

While I started rewriting my python parsing, I realized a much better way to do what you asked (I parsed names and dates of submission to calculate weekend/weekday submission ratios to see who had no life!)

Check out the repo, then go to it and execute:

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

That gets a list of all the changes that have been commited, greps for the lines that start with the revision and number (r[12341] | author | date-and-stuff... ), prints out the third field (author), sorts the authors and gets rid of duplicates.

2
  • @user12889: Your welcome. I just happened to see the right question at the right time. Apr 14, 2010 at 4:34
  • In case the names field contains a value with spaces (in my case I had commits from the user (no author)) adding -F ' [|] ' to awk will grab the entire name: svn log | grep '^r[0-9]' | awk -F ' [|] ' '{print $2}' | sort | uniq. Apr 13, 2015 at 3:00
3

Light form of @DrummerB answer for usernames with spaces, combined with simplicity of @vgm64

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

1
  • This also works for me - whereas @DrummerB's version didn't output anything
    – NickG
    Apr 3, 2019 at 10:27
2

vgm64's answer is good, but it doesn't work well with names that contain spaces. I changed it, so it does:

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

I know this thread is old but since some tutorials to convert SVN to Git are linking there, I add a command that will generate an Authors.txt file:

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

If this is an imported SVN, or if you stumble on the Not a working copy error, you can specify local path to SVN folder by adding file:///tmp/svn-repo after svn log -q

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.