Appliquer un patch
Vous avez ouvert un ticket au service support et celui-ci vous a fourni un patch ou un lien vers un patch? Voici la procédure simple pour l'appliquer !
Procédure simplifiée (Grande majorité des cas)
Le service support :
à lié à sa réponse un fichier patch (extension
patchoudiff)vous a donné un lien vers ce même type de fichier
exemple
https://xxx/bug-fix.diffou bien encore
https://xxx/bug-fix.patch
Placer le patch au bon endroit
Selon ou se situe le bug rencontré, le patch peut-être à destination du cœur ou d'un plugin. Il est donc nécessaire de placer le patch au bon endroit avant de l'appliquer.
Le patch concerne le cœur de GLPI
Un fichier vous a été fourni: Déplacez le fichier précédemment créé vers le dossier racine de GLPI.
Un lien vous a été fourni: Se déplacer vers le dossier racine de glpi puis lancer la commande suivante afin de télécharger le patch:
wget
https://xxx/bug-fix.diff
Vérifier ensuite que le fichier est bien présent:

Le patch concerne un Plugin
Un fichier vous a été fourni: Déplacez le fichier précédemment créé vers le dossier du plugin.
Un lien vous a été fourni: Se déplacer vers le dossier du plugin puis lancer la commande suivante afin de télécharger le patch:
wget
https://xxx/bug-fix.diff
Vérifier ensuite que le fichier est bien présent:

Tester le patch
Avant d'appliquer le patch, vous devez le tester avec cette commande et le paramètre --dry-run
grep -v "phpunit/" buf-fix.diff | patch -p1 --dry-runLe test échoue ❌
En cas d'erreur vous devriez avoir ceci
patching file inc/config.class.php
Hunk #1 FAILED at 400.
1 out of 1 hunk FAILED -- saving rejects to file inc/config.class.php.rejBeaucoup de choses peuvent mener à l'échec :
Votre version de GLPI est différente de la version utilisée pour faire le patch
Le fichier qui doit être modifié par le patch a déjà été précédemment
Arrêtez-vous ici et contactez le support et expliquez votre problème (n'hésitez pas à ajouter des captures d'écran, version GLPI, commande utilisée etc)
Le test réussi ✅
En cas de succès vous devriez avoir ceci
patching file inc/config.class.phpou ceci
patching file inc/config.class.php
Hunk #1 succeeded at 891 with fuzz 1 (offset 23 lines).
Hunk #2 succeeded at 1301 with fuzz 2 (offset 41 lines).Appliquer le patch
Le test est réussi ✅ ? Vous pouvez maintenant appliquer réellement le patch avec cette commande
grep -v "phpunit/" buf-fix.diff | patch -p1Félicitations le patch est appliqué !
Cas particuliers (rares)
Le service support :
Vous demande de revert / annuler le patch
Vous a fourni un numéro de commit
Vous a fourni un lien vers une PR
Annuler un patch
Pour annuler un patch, entrez la commande :
patch -p1 < bug-fix.diff -RVous avez un numéro de commit
Le service support vous donne ce numéro de commit ex : adc9876
D'abord, vous devez récupérer les changements du commit
Allez à
https://github.com/glpi-project/glpi/commit/ + NUMERO_COMMIT
Exemple
https://github.com/glpi-project/glpi/commit/adc9876

Puis, transformez le commit en patch en ajoutant
.diffà la fin de l'url.
Comme ceci https://github.com/glpi-project/glpi/commit/adc9876.diff

Copiez l'URL du patch et exécutez un wget sur votre serveur GLPI
wget https://github.com/glpi-project/glpi/commit/adc9876.diff
Vous avez un numéro PR (Pull Request)
Le service support vous donne un numéro PR 4770
D'abord, vous devez récupérer la PR
Allez à
https://github.com/glpi-project/glpi/pull/ + NUMERO_PR
Exemple
https://github.com/glpi-project/glpi/pull/4770

D'abord, transformez la PR en patch en ajoutant
.diffà la fin de l'url.
Comme ceci https://github.com/glpi-project/glpi/pull/4770.diff

Copiez l'URL du patch et exécutez un
wgetsur votre serveur GLPIwget https://github.com/glpi-project/glpi/pull/4770.diff
Enfin, allez à la section appliquer le patch
Vérifier que le binaire patch est installé
Dans de rares cas, il se peut que votre installation de Linux ne soit pas pourvue de la commande patch. Pour savoir s'il est installé, trouvez simplement la version du binaire patch installé
patch -vS'il est installé vous devriez avoir ceci
GNU patch 2.7.6
Copyright (C) 2003, 2009-2012 Free Software Foundation, Inc.
Copyright (C) 1988 Larry Wall
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Larry Wall and Paul EggertSinon vous devriez avoir ceci
command not found: patchInstallez-le avec cette commande
Ubuntu/Debian
apt-get install patchCentOS/RHEL
yum install patchMis à jour