Gource is a software version control visualization tool and one of its unique features is that its pretty darn fast and support a multitude of version control systems including SVN.
It took me less than 10 minutes to get it up and running to visualize JBoss Tools and Hibernate svn checkout.
It took a little bit of insomnia to also add in automatic fetching of user images from community.jboss.org based on the committer names in the logs and I end up with something like this:
The still shot doesn't really make Gource justice so be sure to check out some of the example videos available from Gource.
If you want to try to run this on your own then here is the script I created for it (tested on cygwin but should work on other *nix variants too).
The Script
Requirements:
- Gource for your platform
- svn-gource.py (place it in the root directory of Gource)
- svn
- curl
- Python
- Cygwin (if on windows)
Update the GOURCE_HOME
in the following (non-optimized, but working) shell-script and save it to gourcejboss.sh
:
export GOURCE_HOME=/cygdrive/c/work/products/gource echo Fetching SVN Log svn log --verbose --xml > gource-svn.log echo Convert svn log to gource log python $GOURCE_HOME/svn-gource.py --filter-dirs gource-svn.log > gource-custom.log echo Getting unique committers from log and preparing urls gawk -F\| '{ print $2 }' gource-custom.log > gource-all.txt sort gource-all.txt | uniq > gource-unique.txt gawk -F\| '{ print "curl -o " $1 ".png http://community.jboss.org/profile-image-display.jspa?username=" $1 }' gource-unique.txt > gource-urls.txt echo Fetching committer images from community.jboss.org mkdir gource-img cd gource-img sh ../gource-urls.txt echo Removing images for users with errors/missing grep -l "unexpected error" *.png | xargs -n1 -i rm {} cd .. echo Running gource $GOURCE_HOME/gource --log-format custom --user-image-dir ./gource-img gource-custom.log
Now go into the root of the svn checkout you want to run gource on and run sh gourcejboss.sh
and see the magic unfold.
Have fun and if you have a machine with enough diskspace/cpu to record a video, post the link!