Comment corriger un seul bogue sans faire de mise à jour

Remarque : la traduction de cette page n'est pas terminée. N'hésitez pas à traduire tout ou partie de cette page ou à la compléter. Vous pouvez aussi utiliser la page de discussion pour vos recommandations et suggestions d'améliorations.


Supposons :

  • Vous utilisez une ancienne version de Moodle.
  • Vous rencontrez un bogue particulier.
  • Vous avez fait une recherche dans le [tracker http://tracker.moodle.org/], et trouvé que votre problème est MDL-abc, et qu'il a été corrigé dans la dernière version.
  • Pour une raison quelconque, vous ne pouvez pas mettre à jour l'ensemble de votre site, même si la dernière version contient probablement des correctifs de sécurité.

Cette page explique comment extraire la correction du bogue et l'appliquer à votre site.

Trouver ce qui a changé

Dans le tracker, en haut de la section commentaires (sous la description) il y a une rangée d'onglets : Tous, Commentaires, Historique des modifications, Contrôle de version.

L'information que nous voulons se trouve dans l'onglet "Contrôle de version" (et aussi dans l'onglet "Tout") alors cliquez dessus. Vous verrez quelque chose comme :

Versioncontrol.png

Ce que vous voyez là est :

  • Une ligne de résumé "Quelqu'un a commis des fichiers n à "Moodle CVS" sur la branche BRANCH_ID - date.
  • Quelques textes (dans ce cas "abonnements au forum : MDL-14876 - suivi - utiliser le bon préfixe de table..."). C'est le commentaire que le développeur a fait lors de la validation de ses modifications dans le système de contrôle de version, pour expliquer ce qu'il a fait.
  • Une liste de fichiers, montrant ce qui a changé.

Vous devez rassembler tous les changements relatifs à la version de Moodle que vous utilisez. Par exemple, si vous utilisez Moodle 1.9.x, vous devez rechercher tous les changements "on branch'MOODLE_19_STABLE'", et rassembler tous les changements dans tous les fichiers.

Tout sauvegarder

Vous êtes sur le point d'éditer le code de votre site Moodle. Quelque chose pourrait mal tourner. Vous devez faire une sauvegarde complète. L'approche recommandée est :

  1. Copiez le site entier sur un serveur de test.
  1. Entraînez-vous à effectuer les modifications sur la copie en cours d'exécution sur le serveur de test.
  1. Testez, pour vous assurer que les modifications que vous avez apportées ont résolu le problème particulier que vous essayiez de résoudre, et aussi que les modifications n'ont rien cassé d'autre.
  1. Si tout va bien, faites une sauvegarde complète de votre système en direct.
  1. Ensuite, apportez exactement les mêmes modifications au code, que vous avez apportées sur votre serveur de test, sur le serveur actif.
  1. Testez à nouveau, pour s'assurer que le problème est résolu, et que rien d'autre n'est cassé.
  1. Surveillez de plus près vos historiques de serveur et votre service d'assistance, etc. pendant les prochains jours, au cas où ils montreraient un problème qui aurait échappé à vos tests.

Bien sûr que parfois, vous ne pouvez pas vous permettre d'être aussi prudent, mais ce qui précède est l'idéal, et vous devriez au moins être conscient du gain de temps qu'il vous apporte.

Apporter les mêmes modifications à votre site

Maintenant que vous savez quels fichiers ont été modifiés, vous devez faire les mêmes changements dans votre copie de Moodle. Il y a deux approches :

  • En particulier si les changements sont mineurs, il peut être plus facile de changer votre copie du code à la main.
  • Si les modifications sont importantes, vous pouvez enregistrer le fichier patch lisible par machine (par exemple, vous pouvez l'enregistrer sous mdl-abc.patch.txt). Ensuite, suivez les instructions sur Comment appliquer un patch pour avoir exactement les mêmes modifications apportées à votre version de Moodle.

Ce qui peut mal tourner

Validation sans ID du problème

Si le développeur n'a pas mentionné l'identifiant du problème (MDL-abc) lors de la validation de ses modifications dans le système de contrôle de version, alors le tracker ne pourra pas associer ces modifications avec le problème du tracker. Bien sûr, les développeurs devraient toujours mentionner le numéro d'identification du problème, mais il arrive parfois que des erreurs se produisent. L'autre erreur est de taper l'ID du problème, par exemple pour taper MDL-14875 quand vous voulez dire MDL-14876.

Cette correction de bogue repose sur d'autres changements

Supposons que vous utilisez Moodle 1.9.2. Un autre bogue a été corrigé dans Moodle 1.9.3. Et vous regardez un bogue qui a été corrigé dans Moodle 1.9.4, et vous voulez appliquer cette deuxième correction de bogue pour votre site. Il se peut que la correction du bogue dans Moodle 1.9.4 repose sur des modifications qui ont été apportées pour corriger l'autre bogue de la version 1.9.3.

Dans ce cas, essayer d'appliquer la correction de bogue qui vous intéresse directement à Moodle 1.9.2 ne fonctionnera pas.

Pour minimiser le risque que cela se produise, vous devez enquêter un peu plus.

  1. Dans l'onglet contrôle de version du bogue, cliquez sur le nom d'un fichier (par exemple, le lien "mod/forum/lib.php" dans la capture d'écran ci-dessus).
  1. Ceci vous montrera l'historique complet de la version complète de ce fichier. En fait, vous ne voulez pas l'historique complet, donc
  1. En haut de cette page, il y a une "Etiquette adhésive:". Changez cela pour préciser MOODLE_19_STABLE, ou la branche stable qui vous intéresse. Cela vous montrera alors seulement les changements qui se rapportent à votre version.
  1. Faites défiler la page vers le bas pour trouver la version du fichier que vous avez actuellement.
  1. Lisez tous les changements entre cette version et la version qui corrige le bogue qui vous intéresse. Vous remarquerez que chaque fois qu'un identifiant de problème de tracker est mentionné, il s'agit d'un lien vers le problème de tracker. Si nécessaire, suivez le lien et lisez le problème du tracker.

En vous basant sur toutes ces recherches, vous serez peut-être en mesure de déterminer si les changements qui vous intéressent dépendent d'autres changements.

En guise de raccourci, au lieu de faire la recherche vous-même (ou en plus), vous pourriez essayer de poster dans un forum approprié sur moodle.org, en demandant si quelqu'un d'autre sait à quel point une correction de bogue en particulier peut être "sûre" à appliquer de manière indépendante.

Quelle version d'un fichier avez-vous ?

Pour trouver exactement quelle version de chaque fichier vous avez actuellement, regardez à l'intérieur du fichier. La première ligne ressemblera probablement à :

<?php  // $Id: lib.php,v 1.609.2.89 2009/03/03 06:46:28 dongsheng Exp $

le numéro qui suit " v ", en l'occurrence 1.609.2.89, est la version de ce fichier. Vous devriez être en mesure de faire correspondre cela avec les numéros de version dans l'historique CVS.

Dernière remarque

Rappelez-vous que ce qui est décrit ici est vraiment le plan B. Le plan A est toujours de mettre à jour votre site entier vers la dernière version stable. Vous obtiendrez ainsi toutes les corrections de bogues, y compris toutes les dernières corrections de sécurité. Cependant, il arrive parfois que les étapes à suivre soient nécessaires.

Voir aussi