2010-12-15 126 views
1

J'essaie d'appliquer un patch en utilisant 2 fichiers dans des répertoires différents. Le fichier de sortie devrait aussi être dans un répertoire différent. Le premier fichier est en /var/local/documents/document.xml et le fichier de correctif se trouve dans /var/local/patches/patch.diff et je souhaite que le fichier de sortie soit créé en /var/local /final/final.xml.application de la commande de patch à l'aide des fichiers dans des répertoires différents sous Linux

Lorsque les fichiers sont situés dans le même répertoire, cette commande fonctionne:

patch document.xml -i patch.diff -o final.xml 

Mais quand ils sont dans des répertoires distincts et je tente d'utiliser la commande suivante:

patch /var/local/documents/document.xml -i /var/local/patches/patch.diff -o /var/local/final/final.xml

Je reçois l'erreur suivante:

(Stripping trailing CRs from patch.) 
patching file {file} 
Hunk#1 FAILED at 20. 
1 out of 1 hunk FAILED -- saving rejects to file {file} 

J'ai lu quelque part que je devrais utiliser -d et -p pour travailler corre cte avec des répertoires mais je n'ai aucune idée comment je devrais le faire ...

Répondre

5

Oui, il est -p commutateur (dans votre cas, il devrait enlever 2 entrées de chemin patch):

cd /var/local/documents 
patch -p 2 -o ../final/final.xml document.xml < ../patches/patch.diff 
+0

Merci :) Que si le regard de commande patch comme si le fichier patch était /var/local/out/upload/patch.patch et à la fois le fichier final et le fichier d'origine ont été/var/local/upload/example_word/mot /document.xml? –

+1

Envisagez-vous êtes dans/var/local/upload/example_word/word' il serait 'patch -o final.xml -p 4 document.xml

+1

Ou' patch -o final.xml -p 5 document.xml <../../../ out/upload/patch.patch' ([..] + [..] + [..] + [out] + [upload] == 5) avec des chemins relatifs. –

1

Essayez ceci:

$ mv /var/local/final/final.xml /var/local/final/document.xml 
$ (cd /var/local/final && patch document.xml) < patch.diff 
$ mv /var/local/final/document.xml /var/local/final/final.xml 
+0

Merci. C'est une bonne solution de contournement et je pensais à ça aussi j'avais besoin de patcher sans bouger les fichiers. –