Animer l'évolution de son code source avec Gource
La plupart des projets sont maintenant gérés avec des systèmes de contrôle de version (VCS) tels que SVN ou Git.
Pour voir la construction de ces projets, le seul outil offert par ces VCS est l’historique via la commande log.
C’est bien pratique mais pas très fun et compréhensible pour des non techniques…
C’est là que Gource entre en scène !
Présentation
Gource est un outil permettant de gérer une vidéo de l’évolution du code source d’un projet géré par un VCS.
Il gère nativement :
Mais il peut fonctionner avec tout autre type de VCS à condition de faire un petit effort de normalisation des informations de l’historique (l’utilisation avec CVS est par exemple documentée)
Gource va en fait extraire l’historique du projet depuis le VCS et faire une animation de l’évolution du code sous la forme d’un arbre représentant l’arborescence de fichier qui va évoluer dans le temps via des modifications par les contributeurs au projet.
Exemples
Puisqu’une vidéo est plus claire qu’un long discours, voilà des exemples de l’évolution du code source des 3 principaux DVCS actuels (Git, Bazaar et Mercurial) :
- Git
- “Git in 1min with Gource” sur Youtube
- Bazaar
- “Bazaar in 1min with Gource” sur Youtube
- On remarque ici l’utilisation de Patch Queue Manager qui réduit les contributeurs à un seul.
- Mercurial
- “Mercurial in 1min with Gource” sur Youtube
Installation
Pour utiliser Gource, il suffit de l’installer.
Sous Ubuntu, il existe par exemple un package gource que vous pouvez installer via sudo apt-get install gource
.
Pour Windows, il suffit de décompresser l’archive et d’utiliser l’exécutable gource.exe
.
Utilisation
En vitesse
Pour l’utiliser, rien de plus simple : il suffit de le lancer depuis la racine de votre projet :
$ cd myProject $ gource
Une fenêtre va s’ouvrir et l’évolution de votre code source va se rejouer devant vos yeux.
En détail
Gource est ensuite très paramétrable. Parmi les paramètres utiles :
-a, --auto-skip-seconds SECONDS
: permet de sauter les période d’inactivité de plus de SECONDS secondes
-s, --seconds-per-day SECONDS
: permet de régler la vitesse de l’animation
--user-image-dir DIRECTORY
: permet de définir des avatars pour chaque utilisateur : Gource utilisera comme avatar l’image DIRECTORY/zigarn.jpg pour l’utilisateur zigarn par exemple
--default-user-image IMAGE
: permet de définir un avatar par défaut si l’option précédente n’est pas utilisée ou qu’il n’y a pas d’image du nom de l’utilisateur (Attention : il faut préciser le chemin complet, pas juste relatif à DIRECTORY de l’option précédente)
Il existe un grand nombre de paramètres permettant de modifier l’apparence de l’animation en jouant sur l’effet de halo, l’affichage de certaines informations, le mouvement de la caméra, …
Tous ces paramètres sont bien documentés via gource --help
ou la page de manuel.
Export vidéo
Gource permet d’exporter l’animation sous la forme d’une séquence d’images au format PPM via l’option -o, --output-ppm-stream
.
Ces images peuvent ensuite être combinées en une vidéo avec un encodeur vidéo tel que ffmpeg
.
Un exemple d’utilisation sous Linux pour un export en FLV (parfait pour un upload sur Youtube) pourra être le suivant :
gource --stop-at-end -s 0.05 --hide filenames,dirnames --date-format "%d/%m/%Y" -1280x720 --disable-progress --output-ppm-stream - | ffmpeg -y -b 3000K -r 30 -f image2pipe -vcodec ppm -i - -vcodec flv video-gource.flv
La documentation officielle donne aussi un exemple pour Windows et tout un tas de vidéos pour différents projets.
Conclusion
Voilà, vous avez maintenant un outil vous permettant de visualiser l’évolution de votre projet et de communiquer facilement dessus.
Et puis, il faut l’avouer, c’est joli !
Enfin, pour approfondir, dans le même principe mais un peu moins compréhensible visuellement, il y a code_swarm.