Le guide de dix minutes sur diff et patch

Voici un guide rapide sur /diff/ et /patch/ qui vous aidera dans ces situations en décrivant les outils de la façon la plus communément utilisée. Il vous en dira suffisamment pour commencer de la bonne façon. Plus tard, vous pourrez apprendre les tenants et les aboutissants de diff et patch à votre guise, en utilisant les pages de manuel.

Appliquer des patchs avec patch

Pour appliquer un patch à un seul fichier, mettez vous dans le dossier où se trouve le fichier à modifier et le patch, puist appelez patch :

,----

| patch < foo.patch

`----

Ces instructions assument que le patch est distribué dans un format unifié qui identifie le fichier sur lequel appliquer le patch. Sinon, vous pouvez le préciser avec la commande :

,----

| patch foo.txt < bar.patch

`----

Appliquer des patches à un dossier complet (sûrement le cas le plus commun) est similaire, mais vous devez faire attention en identifiant le "niveau p". Cela signifie que, dans les fichiers de patch, les fichiers à patcher son tidentifiés par des noms de chemins qui peuvent être différents maintenant que les fichiers se trouvent sur votre ordinateur plutôt que sur l'ordinateur où le patch a été créé. Le niveau de profondeur p est fait pour ignorer les parties du nom de chemin afin qu'il puisse identifier les fichiers correctement. Le plus souvent un niveau de 1 fonctionnera, vous utiliserez donc:

,----

| patch -p1 < bar.patch

`----

Vous devriez changer le répertoire source de haut niveau avant d'exécuter cette commande. Si un niveau p n'identifie pas correctement les fichiers à patcher, inspecter le patch pour repérer les noms complets d'accès aux fichiers. Si vous voyez un nom comme :

,----

| /users/stephen/package/src/net/http.c

`----

Et que vous souhaitez modifier le fichier net/http.c, utilisez :

,----

| patch -p5 < baz.patch

`----

En général, compter jusqu'à un pour chaque séparateur de chemin (barre oblique) que vous supprimez à partir du début du chemin, jusqu'à ce que ce quele chemin qui reste existe dans votre répertoire de travail. Le nombre atteint est le niveau p.

Pour effacer les effets d'un patch, utilisez l'option -R , comme ceci :

,----

| patch -p5 -R < baz.patch

`----

Créer des patchs avec diff

L'utilisation de diff est simple si vous travaillez avec des fichiers ou des répertoires individuels entiers. Pour créer un patch pour un seul fichier que vous avez copié, renommé puis modifé, utilisez la commande :

,----

| diff -u original.c new.c > original.patch

`----

Pour créer un patch pour une arborescence complète des sources, faire une copie de l'arbre :

,----

| cp -R original new

`----

Apportez les modifications nécessaires dans le répertoire copié. Ensuite, créez un patch avec la commande suivante :

,----

| diff -rupN original/ new/ > original.patch

`----

C'est tout ce dont vous avez besoin pour commencez à travailler avec diff et patch. Pour de plus amples informations, utilisez les pages de manuel :

,----

| man diff

| man patch

`----

Traductions

Cet article a été traduit et republié dans les langues suivantes :

Espagnole : Guia de 10minutos de diff y patch

Portugaise : O Guia de Dez Minutos de diff e patch

Anglaise : The Ten Minute Guideto diff and patch

Polonaise : 10 minut z diff ipatch

Allemande : diff und patch in zehn Minuten