It's better when it's simple

User Tools

Site Tools


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 :
This program parse logs of a dokuwiki
and tranform them for gource (a log viewer)
developped by WolverineX02
site :
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
    for root, dirs, files in os.walk(path):
        for i in files:
            if  ('\.changes$', i)):
                fichier = os.path.join(root, i)
                myfile = open(fichier, 'r')
                for line in myfile.readlines():
                    mots = line.split()
                    if len(mots)>=6:
                        resultat = mots[0] + "|"
                        resultat += mots[5] + "|"
                        resultat += translate(mots[2]) + "|"
                        resultat += fichier
                        print resultat
                    elif len(mots)==4:
                        resultat = mots[0] + "|Anonymous|"
                        resultat += translate(mots[2]) + "|"
                        resultat += fichier
                        print resultat
def translate(mot):
    """translate the dokuwiki vocabulary to the gource one
       C -> A
       E -> M
       other -> M 
    if mot == "C":
        return "A"
    elif mot == "E":
        return "M"
        return "M"
def main(argv):
    """principal function
        opts, args = getopt.getopt(argv, "hd:", ["help", "dokuwiki="])
    except getopt.GetoptError:
    for opt, arg in opts:
        if opt in ("-h","--help"):
        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 -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__":

launch the script inside your dokuwiki directory :

python -d ~/Sites/MyDokuwiki/ | sort > dokusort.log

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.1274091382.txt.gz · Last modified: 2010-05-17 12:16 by

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki