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

manuzhang
la source

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
pootzko
la source
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.

Gilles 'SO- arrête d'être méchant'
la source
merci, j'aimerais pouvoir en avoir un dans la vraie vie et revenir au passé en faisant une erreur :)
manuzhang