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

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

  • 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

Alt text
  • Copiez l'URL du patch et exécutez un wget sur votre serveur GLPI wget https://github.com/glpi-project/glpi/commit/adc9876.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

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

  • 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

Alt text
  • Copiez l'URL du patch et exécutez un wget sur votre serveur GLPI wget https://github.com/glpi-project/glpi/pull/4770.diff

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.

Alt text
  • 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

Alt text
  • 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?