Appliquer un patch
Vous avez un fichier patch
Le service support vous donne un fichier, l'extension peut être patch
ou diff
Exemple : bug-fix.diff
Allez à la section appliquer le patch
Vous 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
wget
sur votre serveur GLPIwget https://github.com/glpi-project/glpi/pull/4770.diff
Info
Si c'est un patch core, effectuez le wget
directement à la racine de GLPI. Si c'est un patch de plugin, effectuez le wget
directement dans le dossier du plugin concerné. Si vous l'avez fait ailleurs, la section appliquer le patch vous aidera à le déplacer au bon endroit.
Enfin, allez à la section appliquer le patch
Appliquer le patch
Patcher GLPI
Déplacez le fichier précédemment créé vers le dossier racine de GLPI.

Allez dans le dossier racine de GLPI
cd
Patcher un plugin
Déplacez le fichier précédemment créé vers le dossier racine du plugin

Allez dans le dossier racine du plugin
cd
Vérifier que le binaire patch est installé
Pour savoir s'il est installé, trouvez simplement la version du binaire patch installé
patch -v
S'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 Eggert
Sinon vous devriez avoir ceci
command not found: patch
Installez-le avec cette commande
Ubuntu/Debian
apt-get install patch
CentOS/RHEL
yum install patch
Tester le patch avant de l'appliquer
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-run
Le test est réussi ✅
En cas de succès vous devriez avoir ceci
patching file inc/config.class.php
ou 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).
Vous pouvez maintenant appliquer le patch pour de vrai avec cette commande
grep -v "phpunit/" buf-fix.diff | patch -p1
Félicitations le patch est appliqué !
Maintenant vous devez tester ce patch, n'hésitez pas à nous donner un retour
Le test a échoué ❌
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.rej
Beaucoup 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
Contactez le support et expliquez votre problème (n'hésitez pas à ajouter des captures d'écran, version GLPI, commande utilisée etc)
Annuler un patch
Pour annuler un patch, entrez la commande :
patch -p1 < bug-fix.diff -R
Last updated
Was this helpful?