come includere un nuovo file in una patch


9

Provo a fare una patch come introdotto qui .
Supponiamo di avere due directory pp1(modified version)e pp0(clean version), creo un file patch pp0.patchcon il diffcomando:

 diff -crB pp0 pp1 > pp0.patch

Il problema è che se c'è un file solo in pp1, non sarà incluso nella patch. Come aggirarlo?

AGGIORNAMENTO :
Prima di tutto cambio nella directory di pp0 e testare se la patch avrà successo

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

Anche se ho aggiunto --new-fileal diffcomando, quelli solo in pp1non sono elencati nel risultato

AGGIORNAMENTO :
ho accidentalmente corretto il file sbagliato così

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

o

  diff -crNb pp1 pp0 > pp0.patch

andrà bene

Risposte:


9

Dovresti essere in grado di farlo utilizzando --new-fileswitch. Tratto dalla pagina man 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.

Prova questo:

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

Non so se l'ho corretto correttamente ma il nuovo file non è incluso
manuzhang

le mie scuse, che funziona
manuzhang

3

La risposta immediata :,diff -N come spiegato da pootzko . Scoprirai che sono state create molte patch diff -urN.

Cosa può migliorare la tua vita: inizia a utilizzare uno strumento di controllo della versione. Se non ne conosci nessuno, inizia con uno dei tre principali sistemi di controllo distribuito di revisione , Bazaar , Git o Mercurial . Controlla la versione pulita, lavora, controlla il tuo lavoro tutte le volte che vuoi e chiedi al tuo sistema di controllo della versione una differenza tra la versione pulita e il tuo lavoro.


grazie, vorrei poterne avere uno nella vita reale e tornare al passato quando commettevo un errore :)
manuzhang
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.