Patch

From aldeid
Jump to navigation Jump to search
This article needs to be translated
This article has been copied from the old wiki and is in french. It needs to be translated into english. If you wish to participate, please send a mail to (click to reveal email)

patch

Description

La commande patch permet d'appliquer un patch à un fichier. Elle est très pratique car elle permet d'appliquer une série de modifications à partir d'un fichier patch, sans avoir à relivrer l'ensemble du fichier modifié.

Création d'un patch

Création manuelle

Soit le fichier "fichier-test" suivant :

01. arbre
02. éléphant
03. gomme
04. chateau
05. ecriture
06. ours
07. serpent
08. /*
09. pantalon
10. manger
11. boire
12. */
13. 
14. abris
15. cryaon
16. test
17. livre
18. page
19. crayon
20. lumiere
21. lampe

Nous allons écrire un patch qui va corriger la ligne 15, en remplaçant "cryaon" par "crayon"

Le patch (fichier-test.patch) est le suivant :

01. --- fichier-test        2010-03-01 07:52:16.000000000 +0100
02. +++ fichier-test-2      2010-03-01 07:55:00.000000000 +0100
03. @@ -12,6 +12,6 @@
04.  */
05.  
06.  abris
07. -cryaon
08. +crayon
09.  test
10.  livre

Ce fichier est composé de plusieurs blocs, découpés comme suit :

  • Lignes 01 et 02 : identifient le fichier à modifier
  • Ligne 03 : identifie les lignes à modifier
    • -12,6 signifie que le bloc qui suit est présent dans le fichier à patcher, à partir de la ligne 12, et que celui-ci s'étend sur 6 lignes (hors lignes commençant par "+").
    • +12,6 fournit des informations sur les modifications à apporter : une fois patché, le bloc identifié précédemment fera également 6 lignes (une suppression et un ajout, signifiant un remplacement)
  • Lignes 04 à 10 : identifient les modification à apporter :
    • Les lignes commençant par un espace ne doivent pas être modifiées
    • Les lignes commençant par un "-" doivent être supprimées
    • Les lignes commençant par un "+" doivent être insérées

Pour appliquer le patch, il nous suffit d'entrer la commande suivante :

$ patch -p0 < fichier-test.patch
patching file fichier-test
Hunk #1 succeeded at 12 with fuzz 1.

Une fois le patch appliqué, nous constatons la création d'un fichier de sauvegarde (fichier-test.orig).

Création automatique avec diff

La commande diff permet de créer automatiquement un patch:

diff -u fichier1 fichier2

Application d'un patch

patch -p0 < patch
INCOMPLETE SECTION OR ARTICLE
This section/article is being written and is therefore not complete.
Thank you for your comprehension.