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