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.
Utilisation
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
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