I recently discovered the Gource open source project which has been around for a few years. It allows you to easily visualize the history of your projects version control system.
To use Gource, you install it on your computer and then run it from the command line in your version controlled directory. I found the easiest way to install Gource was to use MacPorts. Up till now I have always avoided MacPorts but Gource has a lot of dependencies and I was having trouble getting all of them to install.
Once that is installed open a terminal and enter:
sudo port install gource
When Gource is finished installing you should also use MacPorts to install ffmpeg so that you can export your Gource visualizations to video. You can also use ffmpeg to easily add audio to the video file once you have made it.
sudo port install ffmpeg
With everything installed navigate to a version controlled directory that you would like to visualize. Now all you need to do is execute Gource, however you will want to first look through the man pages because there are a lot of options when using Gource. Here is a sample of the command I recently used to create a visualization:
gource --default-user-image ~/Desktop/icon.png --hide date,dirnames,mouse,filenames,usernames -s 0.03 --auto-skip-seconds 0.1 --file-idle-time 0 --max-files 500 --multi-sampling --bloom-multiplier 0.9 --bloom-intensity 0.4 -1280x720 --logo ~/Desktop/logo.png --stop-at-end --output-ppm-stream - | ffmpeg -y -b 3000K -r 24 -f image2pipe -vcodec ppm -i - -vcodec mpeg4 ~/Desktop/video.mp4
Don’t be intimidated by all this. A quick read through the man pages makes all these options make sense and most of it is optional. I am using the –output-ppm-stream option to pipe the output of Gource to ffmpeg to save a video of the visualization.
Once you have made a video you can add audio with the following ffmpeg command:
ffmpeg -i ~/Desktop/video.mp4 -i ~/Desktop/music.mp3 -ab 192k -vcodec copy ~/Desktop/video-final.mp4
See the ffmpeg documentation for more options for creating video and adding audio.