Appliquer un patch

Nous allons voir today comment appliquer un patch. Un patch ou correctif est une section de code que l’on ajoute à une application/site/…, pour y apporter des modifications comme correction d’un bug

Dans le cadre de notre travail, nous utilisons des solutions comme Ibexa DXP, et parfois avant la sortie d’une version plus supérieure, ça peut y arriver qu’un bug est détecté, ici nous avons le choix selon le poids du bug, soit attendre la nouvelle version et faire une mise à jour, soit appliquer le patch fournit.

Nous allons donner l’exemple d’un composant nommé ezplatform-graphql

Avant d’appliquer le patch en local, il est conseillé de le tester à l’aide du paramètre –dry-run,

La commande a lancé depuis le composant concerné

  • vendor/ezsystems/ezplatform-graphql
  • patch -p1 –dry-run -i /PATH_TO_THE_PATCH_FILE_EZP-322.patch

Si le test réussit et que vous n’obtenez aucune erreur « hunck Failed », alors appliquer le patch à l’aide de la commande suivante :

  • patch -p1 -i /PATH_TO_THE_PATCH_FILE_EZP-322.patch

Vous pouvez toujours revenir en arrière à l’aide de la commande

  • patch -p1 -R -i /PATH_TO_THE_PATCH_FILE_EZP-322.patch

Imaginons maintenant que vous voulez appliquer le patch dans le serveur de recette ou production, sachant que les dossiers dans vendor sont en Read Only. Dans ce cas la solution est composer patch plugin, donc il faut installer cweagans/composer-patches

Le tout va se faire au niveau du fichier composer.json

    "extra": {
        "symfony": {
            "allow-contrib": true,
            "require": "5.3.*",
            "endpoint": "https://flex.ibexa.co"
        },
        "patches": {
            "ezsystems/ezplatform-graphql": {
                "FIX IBX-657": "../patchs/IBX-657.patch",
                "FIX IBX-659": "../patchs/IBX-659.patch"
            }
        }
    },

Avec ce bout de code, les correctifs vont s’appliquer au moment de build de votre application.

Après avoir appliqué le correctif, n’oubliez pas le cache doit être vidé.