comment inclure un nouveau fichier dans un patch


9

J'essaie de faire un patch comme présenté ici .
Disons que j'ai deux répertoires pp1(modified version)et que pp0(clean version)je crée un fichier patch pp0.patchavec la diffcommande:

 diff -crB pp0 pp1 > pp0.patch

Le problème est que s'il n'y a qu'un fichier en pp1, il ne sera pas inclus dans le patch. Comment contourner cela?

MISE À JOUR :
Je change d'abord dans le répertoire de pp0 et teste si le patch réussira

  patch --dry-run -p1 -i /path-to-pp0.patch

Bien que j'aie ajouté --new-fileà la diffcommande, ceux uniquement dans pp1ne sont pas répertoriés dans le résultat

MISE À JOUR :
J'ai accidentellement corrigé le mauvais fichier afin

  diff -crb --new-file pp1 pp0 > pp0.patch

ou

  diff -crNb pp1 pp0 > pp0.patch

ça ira

Réponses:


9

Vous devriez pouvoir le faire en utilisant --new-fileswitch. Tiré de la page de manuel de diff :

 --new-file
          In directory comparison, if a file is found in only  one  direc-
          tory, treat it as present but empty in the other directory.

Essaye ça:

diff -crB --new-file pp0 pp1 > pp0.patch

Je ne sais pas si je l'ai corrigé correctement mais le nouveau fichier n'est pas inclus
manuzhang

mes excuses, ça marche
manuzhang

3

La réponse immédiate :,diff -N comme l'a expliqué Pootzko . Vous constaterez que de nombreux correctifs sont créés par diff -urN.

Ce qui peut vous rendre la vie meilleure: commencez à utiliser un outil de contrôle de version. Si vous n'en connaissez pas, commencez par l'un des trois principaux systèmes de contrôle de révision distribués , Bazaar , Git ou Mercurial . Enregistrez la version propre, travaillez, enregistrez votre travail autant de fois que vous le souhaitez et demandez à votre système de contrôle de version un écart entre la version propre et votre travail.


merci, j'aimerais pouvoir en avoir un dans la vraie vie et revenir au passé en faisant une erreur :)
manuzhang
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.