Blame
Date:
Sun Jun 28 20:43:02 2020 UTC
Message:
logo adjust
001
2020-06-28
dev
Title: Le guide de dix minutes sur diff et patch
002
2020-06-28
dev
Date: 2012-02-11
003
2020-06-28
dev
Category: Tech
004
2020-06-28
dev
005
2020-06-28
dev
006
2020-06-28
dev
**Situation 1 :** Vous êtes en train de compiler un paquet depuis les sources et
007
2020-06-28
dev
vous remarquez que quelqu'un a déjà effectué le travail pour vous en modifiant
008
2020-06-28
dev
les sources pour que l'application compile sur votre système. Le travail
009
2020-06-28
dev
réalisé est disponible sous forme de patch, mais vous ne savez pas vraiment
010
2020-06-28
dev
bien comment vous en servir. La réponse est d'appliquer le patch contre la
011
2020-06-28
dev
version originale du code source avec un utilitaire de commande appelé, de
012
2020-06-28
dev
façon appropriée, _patch_.
013
2020-06-28
dev
014
2020-06-28
dev
**Situation 2 :** Vous avez téléchargé le code source d'un logiciel opensource et
015
2020-06-28
dev
après près d'une heure d'édition et modifications mineures vous parvenez à le
016
2020-06-28
dev
compiler sur votre système. Vous souhaitez donc mettre votre travail à
017
2020-06-28
dev
disposition pour d'autres programmeurs, ou pour les auteurs même du logiciel,
018
2020-06-28
dev
sans avoir à redistribuer le logiciel modifié complet. Vous êtes donc dans la
019
2020-06-28
dev
situation où c'est à vous de créer ce patch, etl'outil nécessaire à cela, se
020
2020-06-28
dev
nomme _diff_.
021
2020-06-28
dev
022
2020-06-28
dev
Voici un guide rapide sur _diff_ et _patch_ qui vous aidera dans ces situations en
023
2020-06-28
dev
décrivant les outils de la façon la plus communément utilisée. Il vous en dira
024
2020-06-28
dev
suffisamment pour commencer de la bonne façon. Plus tard, vous pourrez
025
2020-06-28
dev
apprendre les tenants et les aboutissants de diff et patch à votre guise, en
026
2020-06-28
dev
utilisant les pages de manuel.
027
2020-06-28
dev
028
2020-06-28
dev
## Appliquer des patchs avec patch
029
2020-06-28
dev
030
2020-06-28
dev
Pour appliquer un patch à un seul fichier, mettez vous dans le dossier où se
031
2020-06-28
dev
trouve le fichier à modifier et le patch, puist appelez patch :
032
2020-06-28
dev
```
033
2020-06-28
dev
patch < foo.patch
034
2020-06-28
dev
```
035
2020-06-28
dev
Ces instructions assument que le patch est distribué dans un format unifié qui
036
2020-06-28
dev
identifie le fichier sur lequel appliquer le patch. Sinon, vous pouvez le
037
2020-06-28
dev
préciser avec la commande :
038
2020-06-28
dev
```
039
2020-06-28
dev
patch foo.txt < bar.patch
040
2020-06-28
dev
```
041
2020-06-28
dev
Appliquer des patches à un dossier complet (sûrement le cas le plus commun) est
042
2020-06-28
dev
similaire, mais vous devez faire attention en identifiant le "niveau p". Cela
043
2020-06-28
dev
signifie que, dans les fichiers de patch, les fichiers à patcher son
044
2020-06-28
dev
tidentifiés par des noms de chemins qui peuvent être différents maintenant que
045
2020-06-28
dev
les fichiers se trouvent sur votre ordinateur plutôt que sur l'ordinateur où le
046
2020-06-28
dev
patch a été créé. Le niveau de profondeur p est fait pour ignorer les parties
047
2020-06-28
dev
du nom de chemin afin qu'il puisse identifier les fichiers correctement. Le
048
2020-06-28
dev
plus souvent un niveau de 1 fonctionnera, vous utiliserez donc:
049
2020-06-28
dev
```
050
2020-06-28
dev
patch -p1 < bar.patch
051
2020-06-28
dev
```
052
2020-06-28
dev
Vous devriez changer le répertoire source de haut niveau avant d'exécuter cette
053
2020-06-28
dev
commande. Si un niveau p n'identifie pas correctement les fichiers à patcher,
054
2020-06-28
dev
inspecter le patch pour repérer les noms complets d'accès aux fichiers. Si vous
055
2020-06-28
dev
voyez un nom comme :
056
2020-06-28
dev
```
057
2020-06-28
dev
/users/stephen/package/src/net/http.c
058
2020-06-28
dev
```
059
2020-06-28
dev
Et que vous souhaitez modifier le fichier net/http.c, utilisez :
060
2020-06-28
dev
```
061
2020-06-28
dev
patch -p5 < baz.patch
062
2020-06-28
dev
```
063
2020-06-28
dev
En général, compter jusqu'à un pour chaque séparateur de chemin (barre oblique)
064
2020-06-28
dev
que vous supprimez à partir du début du chemin, jusqu'à ce que ce quele chemin
065
2020-06-28
dev
qui reste existe dans votre répertoire de travail. Le nombre atteint est le
066
2020-06-28
dev
niveau p.
067
2020-06-28
dev
068
2020-06-28
dev
Pour effacer les effets d'un patch, utilisez l'option -R , comme ceci :
069
2020-06-28
dev
```
070
2020-06-28
dev
patch -p5 -R < baz.patch
071
2020-06-28
dev
```
072
2020-06-28
dev
073
2020-06-28
dev
## Créer des patchs avec diff
074
2020-06-28
dev
075
2020-06-28
dev
L'utilisation de diff est simple si vous travaillez avec des fichiers ou des
076
2020-06-28
dev
répertoires individuels entiers. Pour créer un patch pour un seul fichier que
077
2020-06-28
dev
vous avez copié, renommé puis modifé, utilisez la commande :
078
2020-06-28
dev
```
079
2020-06-28
dev
diff -u original.c new.c > original.patch
080
2020-06-28
dev
```
081
2020-06-28
dev
Pour créer un patch pour une arborescence complète des sources, faire une copie
082
2020-06-28
dev
de l'arbre :
083
2020-06-28
dev
```
084
2020-06-28
dev
cp -R original new
085
2020-06-28
dev
```
086
2020-06-28
dev
Apportez les modifications nécessaires dans le répertoire copié. Ensuite, créez
087
2020-06-28
dev
un patch avec la commande suivante :
088
2020-06-28
dev
```
089
2020-06-28
dev
diff -rupN original/ new/ > original.patch
090
2020-06-28
dev
```
091
2020-06-28
dev
C'est tout ce dont vous avez besoin pour commencez à travailler avec diff et
092
2020-06-28
dev
patch. Pour de plus amples informations, utilisez les pages de manuel :
093
2020-06-28
dev
```
094
2020-06-28
dev
man diff
095
2020-06-28
dev
man patch
096
2020-06-28
dev
```
097
2020-06-28
dev
098
2020-06-28
dev
## Traductions
099
2020-06-28
dev
100
2020-06-28
dev
Cet article a été traduit et republié dans les langues suivantes :
101
2020-06-28
dev
102
2020-06-28
dev
- [Espagnole : Guia de 10minutos de diff y patch](http://rat.uclatux.org.ve/2009/05/guia-de-10-minutos-de-diff-y-patch/)
103
2020-06-28
dev
- [Portugaise : O Guia de Dez Minutos de diff e patch](http://www.fnbrandao.com.br/blog/2012/01/o-guia-de-dez-minutos-de-diff-e-patch%22)
104
2020-06-28
dev
- [Anglaise : The Ten Minute Guideto diff and patch](http://jungels.net/articles/diff-patch-ten-minutes.html)
105
2020-06-28
dev
- [Polonaise : 10 minut z diff ipatch](http://blog.bpiotrowski.pl/1650/10-minut-z-diff-i-patch/)
106
2020-06-28
dev
- [Allemande : diff und patch in zehn Minuten](http://stephenjungels.com/jungels.net/articles/diff-patch-ten-minutes-de.html)
107
2020-06-28
dev
Frédéric Galusik