Patcher un module de Drupal

  • | Configuration
Patcher Drupal

Il arrive parfois qu'après une mise à jour un module ne fonctionne plus comme attendu et qu'apparaisse un bug. La réponse au problème c'est le Patch mais comment patcher un module de Drupal? C'est ce que nous allons voir dans cet article.

Bien sûr on ne teste pas un patch sur un environnement de production! ;)

Appliquer un Patch

Pour patcher un module de Drupal, on se positionne dans le répertoire root du projet. Pour un patch Drupal, on se rend dans le répertoire root de Drupal, pour un module ou un theme contrib dans le répertoire correspondant au projet.

On peut utiliser Git pour appliquer un patch sur un repository :

git apply -v path/file.patch

On peut aussi utiliser --index option pour voir les fichiers modifiés par le patch :

git apply -v --index path/file.patch

Si vous n'utilisez pas git ou que le repository n'est pas local :

patch -p1 < path/file.patch

Remarque: git apply échouera si le patch n'est pas dans son référentiel projet. Il faut plutôt utiliser patch -p1 <chemin / fichier.patch. 

L'option -p indique au correctif le nombre de préfixes principaux à supprimer. Pour les correctifs créés à l'aide de git, -p1 est normalement la bonne option et est la valeur par défaut pour git apply. Si cela ne fonctionne pas, essayez plutôt l'une des commandes ci-dessus avec -p0.

Si le correctif n'a pas été créé par rapport au répertoire racine du projet, vous pouvez mettre le patch dans le même répertoire que le fichier à corriger et exécuter la commande patch sans l'option -p comme ceci : 

​​​​​​​patch < file.patch

Le patch détecte généralement le format automatiquement. Vous pouvez également utiliser l'option de ligne de commande -u pour indiquer un correctif unifié et l'option -b pour créer une copie de sauvegarde du fichier avant de le modifier. En cas de problème, vous pourrez alors facilement restaurer le fichier de sauvegarde.

Inverser un Patch

On peut inverser un patch, si par exemple le patch ne fonctionne pas ou qu'on souhaite en tester un autre. 

Pour inverser un patch on utilise la commande patch avec l'option -R. (Si le patch a été appliqué avec l'option -p0 remplacez -p1 par -p0)

patch -p1 -R < path/file.patch

Ou cette commande avec Git : 

git apply -R path/file.patch

 

L'auteur de cet article
Julien Krier
Responsable Digital, ayant occupé différents postes en informatique depuis 2001, Julien Krier a travaillé sur de multiples plateformes, sites de contenu ou e-commerce à fort trafic. Il est spécialisé dans les technologies web sur les CMS comme Drupal et les Framework Php comme Symfony.
Cet article vous a aidé?
Average: 4 (2 votes)
Partagez cet article
Articles sur le même sujet
hook_help() : créer une page d'aide pour un module en Drupal 8Pour développer de bons modules pérennes, il est important d'avoir des informations ou de la documentation sur le fonctionnement du module ou son installation. Pour enregistrer ces informations on implémente le hook_help().
Comment créer un service dans Drupal 8Quand on développe sur Drupal 8, on passe quasiment obligatoirement par la case service. Qu'est ce qu'un service et comment le configurer? C'est par ici!
Comment ajouter des logs dans Drupal 8Une chose important quand on code un module sur Drupal, c'est de loguer les erreurs, les informations, pour débugger facilement. Voici la commande pour loguer des informations dans le dblog de Drupal 8.