Utilisez diff et patch pour trouver et appliquer vos modifications

April 30, 2015

Vous avez déjà eu a chercher les différences entre deux fichiers ?

Modifier un fichier, puis voulu transmettre uniquement vos modifications ?

Eu a appliquer des modifications sur un fichiers ?

Si vous avez répondu oui a un moment cet article est fait pour vous.

La commande diff

Introduction

Pour résumer la commande diff permet de voir les différences entre plusieurs fichiers. Cette comparaison se fait ligne par ligne de manière séquentielle et comprends donc tout le fichier.

Les cibles peuvent être

En fonction du type de cible le comportement varie un petit peu, surtout lors qu’il ne s’agit pas de deux fichier.

Lorsque  l’une des cibles est un dossier et l’autre un fichier la comparaison est faites sur les fichiers de même nom.

Pour le cas de deux dossiers les fichiers de même nom sont comparé un a un de manière séquentielle.  Par défaut il n’y a pas de récursivité, on ne compare que le premier niveau.

La syntaxe est :

diff [options] cible1 cible 2

Comme vous avez pu le voir dans la commande ci-dessous diff peut avoir des options.

Voici les plus pratiques et utilisé :

La commande patch

Les patch permettent d’appliquer rapidement les modifications effectué entre deux fichiers.

Son utilisation est assez simple entre deux fichiers

patch fichierSource < fichier.patch

Dans le cas des répertoires il y a une option p pour préciser le niveau de profondeur, en effet la hiérarchie des fichiers a pu changer entre le pc ou le patch a été effectué et le pc où l’on applique le patch.

On ajoute le nombre de dossier a sauter dans l’arborescence  pour appliquer le patch.  Souvent l’option -p1 fonctionne – plus de 90% des cas.

Par exemple on pourrai avoir

patch -p3 < fichier.patch

Annuler un patch

Vous avez appliqué le mauvais patch a votre fichier, pas de panique une option est prévu pour revenir au fichier original avec le fichier modifié et notre fichier de patch grâce a l’option -R

Attention pour les patchs avec les répertoire il faut ici encore spécifier la profondeur avec l’option -p comme lors de l’application du patch.

Par exemple

patch -p3 -R &lt; fichier.patch

Créer un patch avec diff

Pour créer un patch avec diff entre deux fichiers on utilise l’option -u et on redirige la sortie vers notre fichier de patch a l’aide du symbole >.

Par exemple

diff -u fichierInitial.c fichierModifie.c &gt; fichier.patch

Pour une arborescence complète l’option change un peu : on utilise -rupN

diff -rupN dossierInitial/ dossierModifie/ &gt; dossier.patch

Conclusion

Pour résumer avec ces commandes vous pouvez

Bien entendu des qu’il y a des dossiers d’autre options sont a rajouté pour gérer la récursion, les fichiers manquant, les différences de hiérarchies etc.

NB : la commande diff est disponible aussi sur git.

En espérant que ces deux petites commandes vous fasse gagner un peu de temps.

comments powered by Disqus