Je voudrais créer un fichier de correctif de type SVN pour httpd.conf
afin que je puisse l'appliquer facilement à d'autres hôtes.
Si je fais
cd /root
diff -Naur /etc/httpd/conf/httpd.conf_original /etc/httpd/conf/httpd.conf > httpd.patch
cp /etc/httpd/conf/httpd.conf_original /etc/httpd/conf/httpd.conf
patch < httpd.patch
Je reçois:
can't find file to patch at input line 3
Perhaps you should have used the -p or --strip option?
The text leading up to this was:
--------------------------
|--- /etc/httpd/conf/httpd.conf_original 2012-04-26 13:36:08.331068438 +0200
|+++ /etc/httpd/conf/httpd.conf 2012-04-26 14:27:36.857075085 +0200
--------------------------
File to patch:
Question
Qu'est-ce que je fais mal?
Par défaut, patch
ignore la partie répertoire du nom de fichier cible; il recherche simplement "httpd.conf" dans votre répertoire de travail actuel. Si vous voulez qu'il utilise le chemin complet, vous devez lui demander explicitement de le faire avec le -p
option:
patch -p 0 < httpd.patch
Le nombre après -p
est le nombre de niveaux à supprimer du chemin du nom de fichier; -p N
supprime tout jusqu'au slash numéro N inclus. Le premier slash est le numéro 1, donc -p 0
signifie "ne rien enlever".
En général, vous feriez mieux de ne pas compter sur le chemin complet dans le fichier correctif; le correctif sera plus généralement utile s'il fonctionne même pour des fichiers dans une disposition de répertoire différente. Vous pouvez toujours cd dans le répertoire contenant le fichier avant d'exécuter le correctif (et utiliser un chemin complet pour trouver le fichier correctif lui-même, si nécessaire, à la place).
Utilisation svn patch
.
Cas 1: en utilisant /usr/bin/patch
:
svn diff > $TMPDIR/mypatchfile.patch
cd myOtherCheckOut
patch -p0 < $TMPDIR/mypatchfile.patch
Applique bien vos modifications s'il n'y a pas de fichiers ajoutés/supprimés via svn add
ou svn delete
Cas 2: en utilisant svn patch
:
svn diff > $TMPDIR/mypatchfile.patch
cd myOtherCheckOut
svn patch $TMPDIR/mypatchfile.patch
Les pistes ont également été ajoutées et supprimées.
Notez qu'aucune piste svn move
s et rename
s
Si vous utilisez TortoiseSVN, il existe une interface facile à utiliser pour créer et appliquer un patch.
Pour créer:
Faites un clic droit sur le dossier -> TortoiseSVN -> Créer un patch
Vous serez invité à sélectionner un fichier de sortie
Pour postuler:
Faites un clic droit sur le dossier -> TortoiseSVN -> Appliquer le patch
Une interface vous sera demandée pour sélectionner le ou les fichiers auxquels appliquer les correctifs et les fusionner si nécessaire.