Première rédaction de cet article le 4 décembre 2007
Pour le chef de projet, pour les développeurs, ou pour les simples curieux, il peut être intéressant d'afficher un graphe des commits (consécration d'un fichier ou groupe de fichiers) dans un dépôt Subversion. C'est ce que fait le programme présenté ici.
Ce programme est écrit en Python et utilise la bibliothèque pysvn pour parler à Subversion (un des gros avantages de Subversion par rapport à l'ancêtre CVS est de disposer d'une API, ce qui facilite énormément le développement de petits utilitaires comme celui-ci).
Voici un exemple d'utilisation :
% svncommits2gnuplot.py -p ~/Programmation/Python/python-dev \ --start "2007-01-01 0:0" > /tmp/python-dev.dat
Ici, on extrait les données de la copie de travail Subversion située
en ~/Programmation/Python/python-dev
(c'est le
dépôt de développement de
Python) et on les met dans un fichier de données accessible à
Gnuplot, /tmp/python-dev.dat
. Un fichier de
commandes Gnuplot comme celui-ci peut ensuite traiter ce fichier de
données :
set terminal png set xlabel "Week" set ylabel "Commits (not their size or quality, only their number)" set title "Activity of the Subversion repository of Python" plot "/tmp/python-dev.dat" using 1:2 with lines title ""
Avec la commande :
% gnuplot /tmp/python-dev.gp > /tmp/python-dev.png
on obtient ce beau graphique où on voit l'intensité du travail de développement de Python.
Le programme svncommits2gnuplot est en fait un peu plus compliqué. Il crée un fichier d'objets Python (un pickle) sérialisés, pour enregistrer certains paramètres et le fichier de commandes Gnuplot est en fait traité par Cheetah pour lire ce fichier d'objets. Voici le gabarit Cheetah pour le fichier de commandes Gnuplot :
set terminal png set xlabel "$period from limit ($limit)" set ylabel "Commits (not their size or quality, only their number)" set title "Activity of the Subversion repository of echoping" plot "subversion.dat" using 1:2 with lines title ""
et, pour effectuer les traitements, j'utilise
make via le Makefile
que
voici :
subversion.png: subversion.dat subversion.gp gnuplot subversion.gp > $@ subversion.dat: svncommits2gnuplot.py ./svncommits2gnuplot.py -e month > $@ subversion.gp: subversion.gp_tmpl svncommits.pickle cheetah fill --pickle svncommits.pickle --iext gp_tmpl --oext gp subversion.gp_tmpl # The real dependency is to the Subversion log .PHONY: subversion.dat
Ainsi, il suffit de taper make subversion.png && feh
subversion.Png
pour afficher des graphiques, par exemple
celui-ci qui montre le développement d'echoping . La courbe importante vers -7
correspond aux préparatifs ayant mené à la sortie de la version 6. La courbe est
plus variable que celle du développement de Python puisqu'il s'agit
d'un programme beaucoup plus petit, avec un seul développeur et de
longues périodes d'inactivité.
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)