Partagée

VPS

Dédiée

WP Professional

WP Professional Plus

L’outil « diff » calcule les différences entre deux fichiers texte. Cette différence est appelée un patch. Vous pouvez appliquer un patch à un autre fichier à l’aide de l’outil « patch ».

Diff et patch sont destinés à être utilisés sur des fichiers texte. Les fichiers qui sont binaires ou manipulés par des applications spécialement conçues, comme les fichiers .doc, .pdf, .xlsx ou .wav, ne fonctionnent pas bien avec diff et patch.

Pourquoi utiliser diff et patch ?

Raison 1 : diff peut être utile par lui-même pour voir ce qui a changé entre les fichiers, même si vous n’utilisez jamais patch.

Raison 2 : parfois, vous pouvez obtenir des patchs de tiers et les appliquer à vos fichiers. Cela peut être bénéfique dans les cas où les fichiers patchés sont volumineux, mais où le nombre de modifications est relativement faible : le transfert d’un fichier patch est plus efficace que le transfert du fichier entier.

Raison 3 : Vous pouvez appliquer des patchs à des fichiers qui ne correspondent pas parfaitement au fichier original utilisé dans diff.
Par exemple, si vous utilisez un CMS avec un fichier de configuration, et que vous apportez des modifications locales à ce fichier de configuration, vous voulez préserver ces changements locaux lorsque vous mettez votre CMS à niveau. En copiant la nouvelle configuration du fournisseur sur votre version, vous perdrez vos modifications. Cependant, dans de nombreux cas, vous pouvez toujours utiliser patch en toute sécurité pour appliquer les modifications du fournisseur à partir de la version la plus récente sans perdre vos propres modifications.

Qu’est-ce que diff ?

Diff est un moyen de comparer les fichiers pour les différences (d’où le nom « diff ») à partir de la ligne de commande. Par exemple, si vous avez un fichier original, puis effectuez quelques modifications et l’enregistrez sous un autre nom, vous pourriez comparer les deux en utilisant diff.

utilisation de l'image diff

Syntaxe de diff

Diff est utilisé en ligne de commande. La syntaxe diff de base ressemble à ceci :

diff 

Cette commande met en place la structure de base pour comparer un fichier à un autre. Il existe également des options pour ajouter plus de fonctionnalités à une commande.

Syntaxe de base (sans options)

Remplacez et par les noms réels des fichiers. Veillez à inclure les extensions de fichiers avec les noms de fichiers. Une commande diff de base sans options peut ressembler à quelque chose comme ceci :

diff file1.html file2.html

Dans cet exemple, la commande comparerait file1.html et file2.html et sortirait les différences dans la ligne de commande.

Syntaxe de diff (avec options)

Les options de diff ajoutent plus de fonctionnalités aux commandes. Cependant, les options modifient un peu la syntaxe des commandes.

Les options de diff vont entre diff et le premier nom de fichier:

diff -y file1.html file2.html

Vous pouvez également combiner plusieurs options dans une commande. Faites-le en ajoutant toutes les lettres des options pertinentes après le tiret (-). Cela finira par ressembler à quelque chose comme ceci:

diff -uy file1.html file2.html

Vous pouvez également voir une variante qui donne à chaque option son propre tiret (-). Les deux méthodes d’ajout d’options multiples sont valables

diff -u -y file1.html file2.html

Voir ci-dessous pour une liste d’options couramment utilisées :

Option Description
-N Ignore les fichiers absents
-r Exécute récursivement diff à travers un répertoire. Utilisé pour comparer plusieurs fichiers à la fois. Note : ce n’est pas la même chose que -R, qui est une option de patch
-u Affiche la sortie dans un format plus facile à lire. Cela peut supprimer certaines informations, comme les lignes de contexte.
-y Force la sortie pour afficher les différences côte à côte.

Pour plus d’options, voir cette liste d’options diff par GNU.

Sortie de diff

Lorsqu’une commande diff est exécutée, la sortie de base ressemblera à ceci :

L’utilisation de l’option -y modifiera la façon dont la sortie est affichée

11c11< this is text from the original file---> this is the same line from the second, changed file

Seuls les changements seront affichés dans la sortie, de sorte que vous n’avez pas à fouiller dans les deux fichiers. Au lieu de cela, diff compare et tire les changements pour que vous puissiez les visualiser.

Introduction

Les caractères « > » et « < » dans la sortie de diff pointent dans la direction du fichier dans lequel se trouve le contenu. Ainsi, pour la commande « diff file1 file2 », un « < » renvoie aux lignes du fichier1 et « > » aux lignes du fichier2.

content tip image

Comment lire la sortie de diff

Voici un bref guide sur la lecture de la sortie de diff.

La première ligne de la sortie

La première ligne de la sortie indique les numéros de ligne qui contiennent des différences et le type de modifications qui ont été apportées.

image de sortie de Diff

Si deux numéros sont séparés par une virgule, cela signifie qu’il y a des changements du premier numéro de ligne jusqu’au second. Dans l’exemple d’image ci-dessus, 11,12 indiquerait qu’il y a des changements sur les lignes 11 – 12.

Le « c » qui sépare les numéros de ligne dans l’exemple ci-dessus indique le type de changement qui s’est produit. Il existe différentes lettres qui indiquent différents types de changements :

.

Letter Meaning
Contenu a été remplacé
a Contenu a été ajouté ou annexé d Contenu a été supprimé

Lorsque vous utilisez le patch, qui sera expliqué dans la section Qu’est-ce que patch ? section, ces lettres seront importantes.

Le reste de la sortie

Le reste de la sortie concerne les différences réelles entre les fichiers.

Les lignes modifiées seront listées à côté des crochets d’angle < ou >. Trois tirets (—) indiquent que la fin de la ligne du premier fichier change et le début de celle du fichier suivant. Cela ressemblera à ceci :

< text from file one---> text from file two

Maintenant que vous avez une compréhension de base de diff, il est temps de passer à patch.

Qu’est-ce que patch?

patch est une commande qui prend la sortie de diff et la met dans un fichier. Ensuite, il peut prendre la sortie du fichier et écraser un autre fichier avec avec les changements. Par exemple, une utilisation courante est d’utiliser le patch pour transférer les changements du fichier modifié au fichier d’origine, les rendant ainsi identiques. Bien que cela puisse également être accompli en copiant/collant le fichier mis à jour dans le fichier d’origine, le patch est beaucoup plus rapide et efficace.

Comment utiliser diff et patch ensemble

Diff fonctionne en cataloguant les changements entre les deux fichiers ou dossiers. Patch peut prendre ces changements, les mettre dans un fichier et mettre à jour les anciennes versions avec celui-ci.

Options de patch

La commande patch a également son propre ensemble d’options pour ajouter des fonctionnalités. Retrouvez ci-dessous une liste d’options couramment utilisées :

-b Créer une sauvegarde du fichier original
-i Forcer la commande à lire le patch depuis le fichier .patch au lieu de l’entrée standard
-p Instruit la commande à dépouiller # nombre de barres obliques du chemin de fichier au nom de fichier. Vous verrez que dans la plupart de nos exemples, nous utilisons -p0 pour qu’aucun slash ne soit dépouillé
R Inverse le patch précédent
-s Exécute la commande en silence. Elle n’affichera le processus que s’il y a des erreurs

Pour plus d’options, voir cette liste d’options de patch par GNU.

Création d’un patch

La création d’un fichier patch est la première étape pour utiliser patch et diff ensemble. Le fichier patch peut être utilisé pour ajouter des modifications à d’autres fichiers, et il est donc nécessaire pour des commandes comme Overwrite the original file with changes.

Pour créer un fichier patch, entrez la commande ci-dessous dans la ligne de commande :

diff -u file1.html file2.html > patchfile.patch

Dans l’exemple ci-dessus, la sortie diff sera enregistrée dans un fichier nommé patchfile.patch. Lors de l’exécution de la commande, veillez à modifier file1.html et file2.html en noms de fichiers réels.

Surécrire les fichiers avec les modifications

Une fois le fichier patch créé, vous pouvez l’utiliser pour copier les modifications dans un autre fichier. Par exemple, vous pouvez vouloir écraser le fichier1 avec les modifications du fichier2 mis à jour. Pour ce faire, vous pourriez utiliser une syntaxe comme celle-ci :

patch file1.html patchfile.patch

Remplacer fichier1.html avec votre fichier original. Cela écraserait l’ancien contenu de file1.html avec le contenu modifié de file2.html.

Comment inverser un patch

Si vous voulez inverser le fichier à sa version précédente avant d’appliquer le patch, vous pouvez le faire en exécutant cette commande :

patch -p0 -R -i patchfile.patch

La ligne de commande vous invitera alors à saisir le nom du fichier que vous souhaitez inverser. Une fois le nom du fichier saisi, le processus d’inversion commencera. En cas de succès, le fichier sera inversé à son état précédent.

Patch des répertoires

L’utilisation de diff et patch sur des répertoires entiers est un processus similaire à celui de l’utilisation sur des fichiers uniques.

La première étape consiste à créer un fichier patch en utilisant la commande :

diff -ruN folder1/ folder2/ > patchfile.patch

Puis, vous émettriez la commande pour patcher le dossier d’origine, qui dans ce cas est le dossier1 :

patch -s -p0 < patchfile.patch

Si cela réussit, votre répertoire d’origine devrait maintenant être mis à jour pour correspondre au deuxième dossier mis à jour.

Laisser un commentaire

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