Patch : application d'un patch dans un répertoire

Patch permet d'appliquer un patch obtenu au moyen d'un diff (svn diff, git diff, …)

Il suffit d'installer le paquet patch.

Créer un patch entre deux fichiers

Pour créer un patch entre deux fichiers, il suffit de taper la commande :

diff -u fichier1 fichier2 > mon.patch

Créer un patch entre deux répertoires

Pour créer un patch entre deux répertoires, il suffit de taper la commande :

diff -Naur rep1/ rep2/ > mon.patch

Patcher un dossier

L'utilisation de l'outil patch se fait en ligne de commande. La syntaxe est la suivante :

patch -p0 < mon.patch

Ceci appliquera le patch "mon.patch" dans le répertoire courant.

-p0 indique que nous prenons les paths du patch en entier. Par exemple : +++ monProjet/test.c va appliquer ce patch dans le sous répertoire monProjet sur le fichier test.c. Si nous avions spécifié -p1 il aurait cherché test.c à la racine de notre répertoire courant.

Patcher tous les fichiers indiqués par le patch

patch < mon.patch

Patcher explicitement un seul fichier

patch monfichier.truc < mon.patchv<note warning>warning</note>

Patcher en mode verbeux sans appliquer réellement le patch

patch --verbose --dry-run < mon.patch

Retour arrière sur un passage de patch

patch --reverse < mon.patch

Application d'un patch avec conservation des permissions

Attention: La commande patch ne preserve pas les permissions, mais les positionne en 644, cela est important notamment lorsqu'on patch un fichier dans /etc/grub.d/ par exemple.

Pour préserver les permissions, il faut utiliser l'option --backup et ensuite faire un chmod --reference, exemple :

cd /etc/grub.d/ && patch --backup -p3 00_header_754921.patch
chmod --reference=00_header.orig 00_header

Contributeurs: dufoli

  • patch.txt
  • Dernière modification: Le 11/09/2022, 11:41
  • par moths-art