tips:gource_analysis
This is an old revision of the document!
I am fond of the wonderful videos made with Gource. This tool makes a representation of changes made on a version control system like git or SVN. Then I remember that DokuWiki is also a version control system like any other … Just have a look in the folder tree to find the directory dokuwiki/data/meta in which the files *. changes contain exactly the information needed.
More information on this blog (french version) or a translate version on this blog.
I wrote a small python script to generate logs from .changes files that can be used by Gource :
- gourcedoku.py
#!/bin/python """ This program parse logs of a dokuwiki and tranform them for gource (a log viewer) http://code.google.com/p/gource/ developped by WolverineX02 site : http://wolverinex02.blogspot.com """ import os.path import getopt import sys import re def listdirectory2(path): """list all the files like *.changes, read them and output them in gource's log syntax """ WHITE = "FFFFFF" GREEN = "00F000" start_page_name = "start" for root, dirs, files in os.walk(path): for i in files: if (re.search('\.changes$', i)): fichier = os.path.join(root, i) myfile = open(fichier, 'r') for line in myfile.readlines(): mots = line.split('\t') if len(mots)>=6: resultat = mots[0] + "|" if mots[4] == '': mots[4] = 'Anonymous' resultat += mots[4] + "|" resultat += translate(mots[2]) + "|" resultat += mots[3].replace(':', '/') if mots[3].rfind(start_page_name) == len(mots[3])-len(start_page_name): resultat += "|" + WHITE else: resultat += "|" + GREEN print resultat else: resultat = mots[0] + "|Anonymous|" resultat += translate(mots[2]) + "|" resultat += fichier resultat += "|FFFFFF" print resultat myfile.close() def translate(mot): """translate the dokuwiki vocabulary to the gource one C (also cc and sc from discussion plugin) ->A E (also ec from discussion plugin) -> M D (also dc and hc from discssion plugin) -> D other -> M """ if mot.upper == "C" or mot == 'cc' or mot == 'sc': return "A" elif mot.upper == "E" or mot == 'ec': return "M" elif mot.upper == "D" or mot == 'dc' or mot == 'hc': return "M" else: return "M" def main(argv): """principal function """ try: opts, args = getopt.getopt(argv, "hd:", ["help", "dokuwiki="]) except getopt.GetoptError: usage() sys.exit(2) for opt, arg in opts: if opt in ("-h","--help"): usage() sys.exit() elif opt in ("-d","--dokuwiki"): print listdirectory2(arg) def usage(): """this function will display how to use this script """ print "This script will output change logs of a dokuwiki" print "in a friendly way for gource" print "how to use it :" print "python gourcedoku.py -d ~/Sites/MyDokuwiki/ | sort > dokusort.log" print "and then :" print "gource --log-format custom dokusort.log --stop-position 1.0 \ " print "--stop-on-idle --file-idle-time 10000000" print "---" print "-h : help " print "-d : meta directory of your dokuwiki" if __name__ == "__main__": main(sys.argv[1:])
then you can use Gource to watch logs :
gource --log-format custom dokusort.log --stop-position 1.0 --stop-on-idle --file-idle-time 10000000
tips/gource_analysis.1274111009.txt.gz · Last modified: 2010-05-17 17:43 by 193.9.13.136