Git bisect
Via le
blog de Dave Miller, je découvre une fonctionnalité amusante et intéressante de
git. Pour ceux qui ne connaissent pas
git, c'est le nouveau système de gestion de version utilisé par les développeurs du noyau depuis l'abandon de la version gratuite de BitKeeper par la société BitMover (voir les dépêches
LinuxFr là,
là et
là).
La fonctionnalité dont parle Dave Miller, expliquée dans l'
entrée de ChangeLog correspondante, est
git bisect. Elle permet de rechercher quelle changement dans le noyau a introduit un bug. En gros, on marque une version comme étant "bonne" (sans le bug) et une version comme étant "mauvaise" (avec le bug). Entre ces deux versions, il y a un certain nombre de changements.
git propose alors automatiquement de tester une version du noyau avec la moitié des changements entre la "bonne" et la "mauvaise" version. On peut alors vérifier si cette version fonctionne ou pas. Si elle fonctionne, alors
git propose une autre version sur laquelle auront été appliqués 3/4 des changements entre la "bonne" et la "mauvaise" version d'origine. Et si elle ne fonctionne pas,
git propose une autre version sur laquelle auront été appliqués 1/4 des changements entre la "bonne" et la "mauvaise". Et ainsi de suite, par
dichotomie, on finit par trouver le changement dans le noyau qui a introduit un bug. Sympathique, non ?