Open Time - Mot-clé - svn<p>Open time, open mind, open eyes</p>2024-03-29T07:16:30+01:00Franck Paulurn:md5:61070eb8c883ae7581f861faefddecbfDotclearGource, SVN et Mac OS X sont dans un bateau…urn:md5:13fab00a14caaf8bdacfaf71941bfe762010-05-22T18:46:00+02:002010-08-23T06:05:49+02:00FranckDotcleardotclearMacOSpratiquesvnvidéo <p>…et aucun ne tombera dans l’eau !</p>
<p>Je me suis un peu amusé depuis hier avec un logiciel que j’ai trouvé au hasard de mes pérégrinations virtuelles. <a href="http://code.google.com/p/gource/" hreflang="en">Gource</a> 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.</p>
<p>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 :</p>
<div style="text-align: center;">
<object type="application/x-shockwave-flash" data="http://open-time.net/?pf=player_flv.swf" width="650" height="370">
<param name="movie" value="http://open-time.net/?pf=player_flv.swf">
<param name="wmode" value="transparent">
<param name="allowFullScreen" value="true">
<param name="FlashVars" value="title=Dotclear%20:%20Commit-activity&amp;margin=1&showvolume=1&showtime=1&showfullscreen=1&buttonovercolor=ff9900&slidercolor1=cccccc&slidercolor2=999999&sliderovercolor=0066cc&flv=http://open-time.net/public/illustrations/2010/dc-gource-soutra.flv&width=650&height=370">
</object>
<div><p>Dotclear : Commit-activity - 01/01/2006 - 21/05/2010<br />Musique : <a href="http://www.jamendo.com/fr/artist/KENE_BUSMA" hreflang="fr">Kene Busma</a> - <a href="http://www.jamendo.com/fr/album/58985" hreflang="fr">Dub</a> / <a href="http://www.jamendo.com/fr/track/503696" hreflang="fr">Soutra</a></p>
</div>
</div>
<p>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.</p>
<h3>Préalable</h3>
<p>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 <em>packages</em> 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 <a href="http://www.macports.org/install.php" hreflang="en">documentation d’installation</a> de MacPort et vous attends sagement avant de continuer mon explication…</p>
<p>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 :</p>
<pre class="brush: plain">sudo port -v selfupdate
sudo port upgrade outdated</pre>
<p>… que vous soyez prêt pour la suite.</p>
<h3>Installation</h3>
<p>D’abord Gource lui-même :</p>
<pre class="brush: plain">sudo port install gource</pre>
<p>Ensuite ffmpeg si vous souhaitez créer des fichiers vidéo avec la sortie générée par Gource :</p>
<pre class="brush: plain">sudo port install ffmpeg</pre>
<p>Puis Subversion dans le cas qui nous concerne, puisque le dépôt de Dotclear utilise ce logiciel :</p>
<pre class="brush: plain">sudo port install subversion</pre>
<p>Enfin, récupérez le <a href="http://gource.googlecode.com/files/svn-gource-1.2.tar.gz">script python</a> pour convertir les fichiers <em>log</em> 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.</p>
<h3>Génération du fichier <em>log</em> nécessaire à Gource</h3>
<p>Nous avons dorénavant tout les logiciels nécessaires. Il faut maintenant générer le fichier qui servira d’entrée à Gource.</p>
<p>Tout d’abord, se positionner dans un répertoire correspondant à une <em>working copy</em> du dépôt :</p>
<pre class="brush: plain">cd ~/Documents/Projets/my-project</pre>
<p>Ensuite récupérer le fichier <em>log</em> complet, puis le convertir dans le format idoine à l’aide des commandes suivantes :</p>
<pre class="brush: plain">svn log --verbose --xml > ~/Documents/my-project.log
python ~/Shell/svn-gource.py --filter-dirs ~/Documents/my-project.log > ~/Documents/my-project-gource.log</pre>
<h3>Admiration du résultat</h3>
<p>Il vous reste maintenant à lancer Gource pour admirer le résultat :</p>
<pre class="brush: plain">gource --log-format custom ~/Documents/my-project-gource.log</pre>
<p>Vous devriez avoir une fenêtre dans laquelle vous pouvez utiliser les touches suivantes :</p>
<ul>
<li>V : pour basculer entre la vue générale et la vue focalisée l’activité en cours du dépôt ;</li>
<li>Tab : sert à passer à l’utilisateur suivant ;</li>
<li>+ et - : pour accélérer et ralentir la vitesse de défilement ;</li>
<li>Espace : pour mettre en pause et redémarrer ;</li>
<li>Esc : pour mettre fin à l’affichage.</li>
</ul>
<p>Si vous déplacez votre souris vers le bas de l’affichage vous verrez apparaître un guide <em>temporel</em> 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.</p>
<h3>Création d’une vidéo</h3>
<p>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.</p>
<p>Exemple pour un fichier MP4 :</p>
<pre class="brush: plain">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</pre>
<p>Autre exemple pour un fichier FLV :</p>
<pre class="brush: plain">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</pre>
<p>Pour information, j’ai utilisé les deux commandes suivantes pour générer une version MP4 et une version FLV :</p>
<pre class="brush: plain">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</pre>
<p>et</p>
<pre class="brush: plain">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</pre>
<p>À noter (options supplémentaires ou différentes de la commande présentée en exemple au début de ce chapitre) :</p>
<ul>
<li><code>-s 0.05</code> permet de spécifier la durée en secondes d’une journée d’activité sur le dépôt ;</li>
<li><code>--hide filenames,dirnames</code> permet de masquer les noms des fichiers et des répertoires ;</li>
<li><code>--date-format "%d/%m/%Y"</code> permet de spécifier le format d’affichage de la date ;</li>
<li><code>-1280x720</code> spécifie les dimensions de la vidéo, ici au format HD 16/9e recommandé pour une mise en ligne sur YouTube par exemple ;</li>
</ul>
<p>et pour ffmpeg :</p>
<ul>
<li><code>-r 30</code> pour spécifier le nombre d’images par secondes de la séquence vidéo produite.</li>
</ul>
<p>Pour obtenir le détail des options possibles :</p>
<pre class="brush: plain">man gource
man ffmpeg</pre>
<p>Voili, voilà, vous savez tout ou presque pour faire de même sur vos dépôts préférés :-)</p>https://open-time.net/post/2010/05/22/Gource-SVN-et-Mac-OS-X-sont-dans-un-bateau#comment-formhttps://open-time.net/feed/atom/comments/4797