Ce samedi a bien commencé avec la lecture sur Planet Debian de deux articles stimulants, l'un à propos de GitTogether2011, et l'autre à propos de l'utilisation de Git dans la société Baserock.
J'aime beaucoup l'idée d'utiliser Git au-delà de la gestion du code source de
programmes. D'ailleurs cet article est lui-même diffusé via un réseau de
référentiels Git. Pour les paquets Debian dont je
m'occupe et qui sont gérés avec Git, je stocke depuis quelques temps les
journaux de construction dans une branche appelée meta
. Depuis
que sbuild filtre
certaines parties variables de ses journaux, la commande git diff
--word-diff=color
permet de surveiller efficacement la différence entre
les constructions de deux versions d'un paquet. Par exemple, pour la mise à
jour de
bedtools
que j'ai faite ce matin, pas grand chose à signaler si ce n'est que
-D_FORTIFY_SOURCE=2
n'est plus passé et que par conséquent les
alertes -Wunused-result
ont disparu.
Un des autres avantages de stocker les journaux de construction est simplement de rendre disponible une information qui ne l'était pas auparavant : buildd.debian.org contient les journaux pour toutes les plates-formes sauf celle utilisée par le responsable du paquet, souvent l'une des plus utilisées, car ses téléchargements combinent paquets source et binaires. Ce problème sera réglé lorsque notre archive reconstruira automatiquement les paquet binaires téléchargé avec les paquets source, mais pas complètement car il est toujours possible de télécharger un paquet binaire isolément.
Dans la branche meta
de mes dépôts Git, les journaux sont gardés
côte-à-côte pour toutes les plates-formes. Je ne suis pas sûr que que ça soit la
disposition idéale, mais pour le moment je suis réticent à l'idée d'avoir une
multitude de branches parallèles. Je commence à automatiser la gestion des
journaux, par exemple avec le petit script suivant pour les récupérer depuis
buildd.debian.org.
#!/bin/bash BASEURL=buildd.debian.org:/srv/buildd.debian.org/db PACKAGE=$1 shift for version in "$*" do scp $BASEURL/${PACKAGE:0:1}/$PACKAGE/${version}/* . for arch in $(ls *bz2 | sed 's/_.*//g') do bzcat ${arch}*bz2 > ${arch}.log rm ${arch}_*_log.bz2; done done exit