Articles

:Comment appliquer un patch

Posted on

Introduction

Cette page explique comment vous pouvez appliquer un fichier patch. Le patch est un format standard, et il existe de nombreuses options pour savoir comment en appliquer un. Choisissez celle qui est la plus facile pour vous.

Peut-être que la plus critique est l’utilisation de l’indicateur -p, qui indique à patch la relation entre le répertoire où se trouve le fichier patch et les fichiers qui seront patchés. Voir les références ci-dessous pour plus de détails et NE PAS présumer de quoi que ce soit.

Appliquer un patch sous Windows en utilisant gnuwin32

  • Télécharger et extraire patch pour windows depuis sourceforge J’ai placé le binaire patch.exe dans C:\bin (NOTE : Les choses sont beaucoup plus faciles si vous le mettez dans un répertoire qui n’a pas d’espaces blancs.)
  • Télécharger et extraire Moodle quelque part. ex : C:\moodle
  • Télécharger le fichier patch et le placer dans le même répertoire que vous avez mis Moodle (C:\moodle\password-policy-17.diff)
  • Ouvrez le fichier patch avec Wordpad, et cliquez sur ‘Fichier’ >> ‘Enregistrer sous…’, choisissez un nom différent pour le fichier par exemple (‘mynewpatch.diff’) et « Enregistrer sous type » >> ‘Document texte – Format MS-DOS’
  • Ouvrez une fenêtre de texte de commande, et tapez :
 cd \moodle c:\bin\patch.exe --dry-run -p1 < mynewpatch.diff

Le nombre après l’option ‘-p’ peut varier selon le fichier de patch, car il dépend de la façon dont le fichier de patch a été généré. Consultez la page de manuel de l’utilitaire ‘patch’ pour voir comment l’option ‘-p’ fonctionne. Vous pouvez également jeter un œil à ce tutoriel diff et patch.

  • Vous devriez obtenir une sortie similaire à celle-ci (les noms et la quantité de fichiers patchés varient d’un patch à l’autre):
 patching file admin/settings/security.php patching file lang/en_utf8/admin.php patching file lib/moodlelib.php patching file login/change_password.php patching file login/signup.php patching file user/edit.php Hunk #1 succeeded at 430 (offset 2 lines).

A ce stade, le patch n’a pas été appliqué. Nous avons juste simulé l’application (avec l’option ‘–dry-run’), pour voir si nous allons trouver des problèmes avec elle. Avant d’expliquer comment appliquer réellement le patch, nous allons parler de ce qui pourrait ne pas fonctionner, et comment y remédier.

Problèmes potentiels et comment les traiter

Problèmes potentiels

Si tout va bien, le patch s’appliquera proprement et la vie devrait être belle ! Mais parfois, le patch ne s’appliquera pas proprement à 100% en raison d’un décalage de version entre les fichiers originaux utilisés pour produire le fichier patch et vos fichiers locaux. Dans ce cas, la commande ‘patch’ essaiera d’appliquer autant de changements que possible, et émettra quelques diagnostics décrivant les problèmes qu’elle rencontre.

  • Si vous obtenez des messages ‘Hunk #n succeeded…’, le patch aurait été appliqué correctement bien qu’à des numéros de ligne différents de ceux du fichier original. Si nous avions réellement appliqué le patch, la commande ‘patch’ aurait créé un fichier supplémentaire pour chacun des fichiers où le hunk a été appliqué à un décalage différent, qui serait nommé comme le fichier original avec l’extension supplémentaire .orig.
  • Si vous obtenez des messages ‘Hunk #n failed…’, le patch n’aurait pas été appliqué correctement. Dans ce cas, la commande ‘patch’ aurait créé deux fichiers supplémentaires pour chacun des fichiers où le hunk n’a pas été appliqué correctement, appelés :
    • nom-fichier-original.orig Il s’agirait du fichier original avant l’application du patch, comme ci-dessus.
    • nom-fichier-original.rej Ce fichier contiendrait les hunks qui n’ont pas pu être appliqués correctement, afin que vous puissiez les inspecter.

Gérer les problèmes potentiels

Gérer le premier problème (les hunks décalés) est trivial : il suffit de supprimer les fichiers .orig une fois que nous appliquons effectivement le patch.

Dans le second cas (hunks ratés), à moins que vous ne sachiez comment réparer les hunks ratés à la main, vous ne devriez pas appliquer le patch, car cela corromprait votre installation Moodle. Si vous voulez appliquer le correctif et essayer de réparer les hunks défaillants à la main, vous devez utiliser l’option ‘-b’. Cette option fait automatiquement une sauvegarde de chaque fichier auquel le patch s’applique, avec l’extension .orig. Cela vous permettrait de revenir à l’état des fichiers originaux en écrasant simplement les fichiers modifiés avec leurs sauvegardes .orig.

Parfois, il y aura une grande différence dans les numéros de ligne depuis qu’un patch a été généré et le patch ne s’appliquera pas. Vous pouvez dire à patch d’autoriser des différences plus importantes dans les numéros de ligne en utilisant l’option fuzz ‘-F’ pour augmenter le nombre de lignes de différence qu’il peut y avoir. Par exemple patch -F 100 permettrait une différence de 100 lignes.

Application effective du patch

Maintenant que nous savons ce qui pourrait mal se passer et comment y faire face, voyons comment appliquer le patch. Nous avons seulement besoin de supprimer l’option ‘–dry-run’:

 cd \moodle c:\bin\patch.exe -p1 < mynewpatch.diff

et d’utiliser éventuellement l’option ‘-b’ si nous allons essayer de réparer les hunks ratés à la main :

 cd \moodle c:\bin\patch.exe -b -p1 < mynewpatch.diff

Appliquer un correctif dans Windows à l’aide de NetBeans

NetBeans est livré avec des outils intégrés pour le contrôle de version et la collaboration des développeurs qui comprennent de puissants outils graphiques Diff et l’application (et la création) facile de correctifs. Vous pouvez appliquer n’importe quel patch à un fichier depuis le menu contextuel du fichier.

Appliquer un patch sous Linux en utilisant « patch »

Utiliser quelque chose comme:patch -p1 < patchfile.diffsee ici pour plus de détails sur l’utilisation de Patch sous Linux

See Also

  • Patch
  • Développement :Comment_to_create_a_patch
  • Drupal – utiliser Cygwin sous Windows pour appliquer un patch
  • Drupal – comment appliquer un patch sous Mac OS X
  • post moodle – utiliser gnuwin32 pour appliquer un patch

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *