added gource directory
[scripts.git] / gource / gource-multiple-repositories-combinedlog.sh
1 #!/usr/bin/env bash
2 # Generates gource video (h.264) out of multiple repositories.
3 # Pass the repositories in command line arguments.
4 # Example:
5 # <this.sh> /path/to/repo1 /path/to/repo2
6
7
8 # too many repos do not have develp
9 #BRANCH='develop'
10
11
12 GITDIR='/home/varac/leap/git'
13
14 #REPOS='bitmask bitmask_drebs duplicity-backup-status gitolite_hare gitolite_orca keymanager leap_android leap_assets leap_ca leap_cli leap_client leap_client_dist leap_client_launcher leap_cloudadmin leap_db leap_doc leap_mail leap_mx leap_pistonadmin leap_platform leap_platform_dev leap_platform_errors leap_pycommon leap_vagrant leap-vagrant leap_web leap_website leap_website_pages minimal-debian-vagrant nickserver platform_test puppet puppet_apache puppet_apt puppet_augeas puppet_backupninja puppet_bundler puppet_concat puppet_couchdb puppet_gcc puppet_git puppet_gpg puppet_haproxy puppet_munin puppet_nagios puppet_passenger puppet_puppet puppet_python puppet_reprepro puppet_ruby puppet_rubygems puppet_shorewall puppet_stdlib puppet_strongswan puppet_stunnel puppet_unbound puppet_user puppet_x509 pwstore pysqlcipher python_gnutls python_jsonschema python_ping python_requests python_sh python_srp ruby_srp scripts soledad soledad_client soledad_server srp_js testing testytest thandy'
15 # only leap_cli, leap_platform + submodules
16 REPOS='leap_cli leap_platform_gource puppet_apache puppet_bundler puppet_git puppet_nagios puppet_reprepro puppet_squid  puppet_stunnel puppet_apt  puppet_concat puppet_gpg puppet_passenger puppet_ruby puppet_squid_deb_proxy puppet_unbound puppet_augeas puppet_couchdb puppet_haproxy puppet_puppet puppet_rubygems puppet_stdlib  puppet_user puppet_backupninja puppet_gcc puppet_munin puppet_python puppet_shorewall puppet_strongswan puppet_x509'
17 #REPOS=`find $GITDIR -maxdepth 1 -mindepth 1 -type d -printf '%p '`
18
19 USERFILTER='(^Aaron DeVore$|^Adrien Thebo$|^Alex Cline$|^am$|^Amos Shapira$|^anarcat$|^andreas$|^Andreas$|^Andreas Maag$|^Andreas Zuber$|^Antoine Beaupre$|^Antoine Beaupré$|^arne$|^Arne Schwabe$|^Ashley Penney$|^ausiv4$|^ben c$|^Ben Carrillo$|^Benjamin Krause$|^Branan Purvine-Riley$|^Brandon Helwig$|^Chad Metcalf$|^Chris Jones$|^Chris Price$|^Chris Spence$|^Christian G. Warden$|^Christian Kaenzig$|^cprice$|^crayfishx$|^Dan Bode$|^dann$|^david$|^David Schmitt$|^Devin Theriot-Orr$|^dudu$|^duritong$|^Eric Shamow$|^Eric Sorenson$|^Erik Dalén$|^Erik Froese$|^Eugene Kirpichov$|^Evan Stachowiak$|^fatmcgav$|^fiddyspence$|^Francois Deppierraz$|^Frederic Junod$|^Gabriel Filion$|^Garrett Honeycutt$|^Gary Larizza$|^Gildas Le Nadan$|^gitolite on orca$|^git repository hosting$|^Hailee Kenney$|^Hunter Haugen$|^intrigeri$|^Jaka Hudoklin$|^James Fryman$|^James Turnbull$|^Jamie McClelland$|^Jan Baier$|^Jaromil$|^Jeff McCune$|^Jerome Charaoui$|^Joe Julian$|^Jonathan Boyett$|^Joshua Harlan Lifton$|^Joshua Hoblitt$|^Juerg Gerber$|^Justin Lambert$|^Keith aka fugit$|^Ken Barber$|^Kristof Willaert$|^Krzysztof Wilczynski$|^ktdann$|^Luke Kanies$|^Marcel$|^Marcel Haerry$|^Marc Fournier$|^Mark Smith-Guerrero$|^Markus Heberling$|^martin f. krafft$|^Martin Hellmich$|^Mathieu Bornoz$|^Matthaus Owens$|^Matthias Imsand$|^Matt Taggart$|^mh$|^Mickaël Canévet$|^nadir$|^Nan Liu$|^nfagerlund$|^ng$|^Nick Groenen$|^o$|^Oded Simon$|^Pascal Simon$|^Patrick Carlisle$|^Paul Tötterman$|^Peter Meier$|^peter woodman$|^Philipp Gassmann$|^Philip Potter$|^Pierre-Yves Ritschard$|^pietro$|^Pietro$|^Pietro Ferrari$|^Raphaël Pinson$|^Reid Vandewiele$|^Richard Clamp$|^Richard Soderberg$|^R.I.Pienaar$|^Riseup$|^Riseup Labs$|^Rohan Sheth$|^Roman Barczyński$|^root$|^R. Tyler Croy$|^Ryan Coleman$|^Salimane Adjao Moustapha$|^Sander Hoentjen$|^sathlan$|^schwabe$|^Sergey Stankevich$|^Sharif Nassar$|^Silvio Rhatto$|^Simon Josi$|^stephen$|^Steve Huff$|^Steve Traylen$|^Stig Sandbeck Mathisen$|^Tails developers$|^Theo Spears$|^Thomas Bartelmess$|^Tim$|^Uwe Stuehler$|^Wil Cooley$|^woldan$|^wwwEagle$|^Will Farrington$|^Alex O.*Rielly$|^Chris Boot$|^Hubert$|^Paweł Tomulik$|^Rafael Gálvez Vizcaíno$|^Tomas Doran$)'
20
21
22 i=0
23
24 for repo in $REPOS; do
25   echo "processing $repo"
26   # 1. Generate a Gource custom log files for each repo. This can be facilitated by the --output-custom-log FILE option of Gource as of 0.29:
27   logfile="$(mktemp /tmp/gource.XXXXXX)"
28   #gource --output-custom-log --user-filter "$USERFILTER" "${logfile}" ${repo}
29   #gource --user-filter "$USERFILTER" --output-custom-log "${logfile}" ${GITDIR}/${repo}
30   gource --user-filter "$USERFILTER" --output-custom-log "${logfile}" ${GITDIR}/${repo}
31   # 2. If you want each repo to appear on a separate branch instead of merged onto each other (which might also look interesting), you can use a 'sed' regular expression to add an extra parent directory to the path of the files in each project:
32   sed -i -E "s#(.+)\|#\1|/${repo}#" ${logfile}
33
34   logs[$i]=$logfile
35   let i=$i+1
36 done
37
38 #combined_log="$(mktemp /tmp/gource.XXXXXX)"
39 combined_log="combined.log"
40
41 cat ${logs[@]} | sort -n > $combined_log
42 rm ${logs[@]}
43
44 sed -f clean_combinedlog.sed -i $combined_log
45
46
47 echo "Committers:"
48 cat $combined_log | awk -F\| {'print  $2'} | sort | uniq
49 echo "======================"