Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
|
patch [Le 01/11/2009, 20:47] 213.95.41.13 |
patch [Le 11/09/2022, 11:41] (Version actuelle) moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892) |
||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| {{tag>bureautique}} | {{tag>bureautique}} | ||
| - | |||
| ---- | ---- | ||
| - | ====== Patch: application d'un patch dans un répertoire ====== | + | ====== 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,...) | + | Patch permet d'appliquer un patch obtenu au moyen d'un diff (svn diff, git diff, ...) |
| - | =====Installation===== | + | Il suffit d'[[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt>patch|patch]]**. |
| - | + | ||
| - | Il suffit d'[[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt://patch|patch]]**. | + | |
| =====Utilisation===== | =====Utilisation===== | ||
| - | L'utilisation de l'outil patch se fait en ligne de commande. La syntax est la suivante: | + | ==== 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 | ||
| - | ''patch -p0 < mon.patch'' | ||
| Ceci appliquera le patch "mon.patch" dans le répertoire courant. | Ceci appliquera le patch "mon.patch" dans le répertoire courant. | ||
| -p0 indique que nous prenons les paths du patch en entier. | -p0 indique que nous prenons les paths du patch en entier. | ||
| - | par exemple | + | Par exemple : |
| +++ monProjet/test.c | +++ monProjet/test.c | ||
| va appliquer ce patch dans le sous répertoire monProjet sur le fichier 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. | 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 ==== | ||
| + | <note warning>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. | ||
| + | </note> | ||
| + | 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 | ||
| + | |||
| + | ===== Voir aussi ===== | ||
| + | * [[https://wiki.debian-fr.xyz/Utiliser_diff_et_patch|Explications plus avancées]] de diff et patch | ||
| ---- | ---- | ||
| //Contributeurs: dufoli// | //Contributeurs: dufoli// | ||