Gource, SVN et Mac OS X sont dans un bateau…

…et aucun ne tombera dans l’eau !

Je me suis un peu amusé depuis hier avec un logiciel que j’ai trouvé au hasard de mes pérégrinations virtuelles. Gource est son nom. Il permet de représenter sous forme visuelle, et très graphique vous verrez, l’activité d’un dépôt Git, Mercurial, Bazaar, SVN (subversion) ou encore CVS. Un dépôt, pour mes lecteurs les plus ignorants des choses qui concernent le développement logiciel — mais on peut tout aussi bien s’en servir pour autre chose —, permet d’enregistrer toutes les versions successives des fichiers constituant un projet. Cela permet de revenir facilement en arrière en cas de problème, de gérer plusieurs versions concurrentes, d’avoir la dernière version permanente d’un logiciel, etc, etc. Bref, du petit lait pour tous les développeurs qui l’utilisent quotidiennement.

Je disais donc que je m’étais un peu amusé hier, avec le dépôt officiel de Dotclear 2, un peu de titraille et un soupçon de musique. Voilà le résultat une fois passé entre les mains de Gource, iMovie (un logiciel de montage vidéo d’Apple) et ffmpeg (un convertisseur vidéo), toute la vie du dépôt condensée en 4 minutes :

Dotclear : Commit-activity - 01/01/2006 - 21/05/2010
Musique : Kene Busma - Dub / Soutra

Pour les ceussent qui voudraient faire pareil, je vais vous indiquer rapidement comment obtenir le (presque) même résultat. Mes propos concerneront un système Mac OS X, facilement adaptable à un système Linux, quand à ceux qui utilisent Windows, j’ai cru lire qu’il était aussi possible de faire de même, seules les procédures peuvent varier légèrement.

Préalable

Pour installer tous les logiciels nécessaires (Gource et éventuellement Subversion et ffmpeg), j’ai choisi d’utiliser MacPort. Ce système permet de récupérer sur des dépôts externes des packages configurés pour tourner sur Mac. À noter que MacPort ne remplacera pas ce qui existe déjà nativement avec Mac OS X. Je vous laisse le soin de consulter la documentation d’installation de MacPort et vous attends sagement avant de continuer mon explication…

Petite notre à l’intention de ceux qui ont déjà MacPort installé sur leur machine. Pensez lancer les deux commandes suivantes afin d’être sûr d’avoir la dernière version de l’index des dépôts et que les modules déjà installés soient à jour :

sudo port -v selfupdate
sudo port upgrade outdated

… que vous soyez prêt pour la suite.

Installation

D’abord Gource lui-même :

sudo port install gource

Ensuite ffmpeg si vous souhaitez créer des fichiers vidéo avec la sortie générée par Gource :

sudo port install ffmpeg

Puis Subversion dans le cas qui nous concerne, puisque le dépôt de Dotclear utilise ce logiciel :

sudo port install subversion

Enfin, récupérez le script python pour convertir les fichiers log générés par SVN afin qu’ils soient lisibles par Gource. Décompressez l’archive pour en extraire le script. Vous aurez besoin de la version 2.5 (à minima) de python pour le faire tourner.

Génération du fichier log nécessaire à Gource

Nous avons dorénavant tout les logiciels nécessaires. Il faut maintenant générer le fichier qui servira d’entrée à Gource.

Tout d’abord, se positionner dans un répertoire correspondant à une working copy du dépôt :

cd ~/Documents/Projets/my-project

Ensuite récupérer le fichier log complet, puis le convertir dans le format idoine à l’aide des commandes suivantes :

svn log --verbose --xml > ~/Documents/my-project.log
python  ~/Shell/svn-gource.py --filter-dirs ~/Documents/my-project.log > ~/Documents/my-project-gource.log

Admiration du résultat

Il vous reste maintenant à lancer Gource pour admirer le résultat :

gource --log-format custom ~/Documents/my-project-gource.log

Vous devriez avoir une fenêtre dans laquelle vous pouvez utiliser les touches suivantes :

  • V : pour basculer entre la vue générale et la vue focalisée l’activité en cours du dépôt ;
  • Tab : sert à passer à l’utilisateur suivant ;
  • + et - : pour accélérer et ralentir la vitesse de défilement ;
  • Espace : pour mettre en pause et redémarrer ;
  • Esc : pour mettre fin à l’affichage.

Si vous déplacez votre souris vers le bas de l’affichage vous verrez apparaître un guide temporel qui vous permet de vous positionner à une date précise. D’autre part, les défilements de la molette de la souris — ou la commande équivalente sur le trackpad — permet de zoomer et de dézoomer.

Création d’une vidéo

Si vous souhaitez obtenir un fichier vidéo de l’affichage il faut alors modifier légèrement la commande pour lancer Gource, afin de renvoyer sa sortie vers ffmeg pour qu’il en produise un fichier vidéo.

Exemple pour un fichier MP4 :

gource --stop-at-end --disable-progress --log-format custom ~/Documents/my-project-gource.log --output-ppm-stream - | ffmpeg -y -b 3000K -r 60 -vpre libx264-default -f image2pipe -vcodec ppm -i - -vcodec libx264 ~/Documents/my-project-gource.mp4

Autre exemple pour un fichier FLV :

gource --stop-at-end --disable-progress --log-format custom ~/Documents/my-project-gource.log --output-ppm-stream - | ffmpeg -y -b 3000K -r 60 -f image2pipe -vcodec ppm -i - -vcodec flv ~/Documents/my-project-gource.flv

Pour information, j’ai utilisé les deux commandes suivantes pour générer une version MP4 et une version FLV :

gource --log-format custom --stop-at-end -s 0.05 --hide filenames,dirnames --date-format "%d/%m/%Y" -1280x720 ~/Documents/my-project-gource.log --disable-progress --output-ppm-stream - | ffmpeg -y -b 3000K -r 30 -vpre libx264-default -f image2pipe -vcodec ppm -i - -vcodec libx264 ~/Documents/my-project-gource.mp4

et

gource --log-format custom --stop-at-end -s 0.05 --hide filenames,dirnames --date-format "%d/%m/%Y" -1280x720 ~/Documents/my-project-gource.log --disable-progress --output-ppm-stream - | ffmpeg -y -b 3000K -r 30 -f image2pipe -vcodec ppm -i - -vcodec flv ~/Documents/my-project-gource.flv

À noter (options supplémentaires ou différentes de la commande présentée en exemple au début de ce chapitre) :

  • -s 0.05 permet de spécifier la durée en secondes d’une journée d’activité sur le dépôt ;
  • --hide filenames,dirnames permet de masquer les noms des fichiers et des répertoires ;
  • --date-format "%d/%m/%Y" permet de spécifier le format d’affichage de la date ;
  • -1280x720 spécifie les dimensions de la vidéo, ici au format HD 16/9e recommandé pour une mise en ligne sur YouTube par exemple ;

et pour ffmpeg :

  • -r 30 pour spécifier le nombre d’images par secondes de la séquence vidéo produite.

Pour obtenir le détail des options possibles :

man gource
man ffmpeg

Voili, voilà, vous savez tout ou presque pour faire de même sur vos dépôts préférés :-)

Ajouter un commentaire

Les champs suivis d'un * sont obligatoires

Les commentaires peuvent être formatés en utilisant la syntaxe Markdown Extra.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/4797

Haut de page