Cómo incluir un nuevo archivo en un parche


9

Intento hacer un parche como se presenta aquí .
Digamos que tengo dos directorios pp1(modified version)y pp0(clean version)hago un archivo de parche pp0.patchcon el diffcomando:

 diff -crB pp0 pp1 > pp0.patch

El problema es que si hay un archivo solo en pp1, no se incluirá en el parche. ¿Cómo solucionarlo?

ACTUALIZACIÓN :
Primero cambio al directorio de pp0 y pruebo si el parche tendrá éxito

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

Aunque he agregado --new-fileal diffcomando, aquellos solo en pp1no están listados en el resultado

ACTUALIZACIÓN :
accidentalmente parcheé el archivo incorrecto

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

o

  diff -crNb pp1 pp0 > pp0.patch

hará

Respuestas:


9

Debería poder hacer esto usando el --new-fileinterruptor. Tomado de la página de manual 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.

Prueba esto:

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

No sé si lo parcheé correctamente, pero el nuevo archivo no está incluido
manuzhang

mi disculpa, eso funciona
manuzhang

3

La respuesta inmediata: diff -Ncomo explica pootzko . Encontrarás que muchos parches están creados por diff -urN.

Qué puede mejorar su vida: comience a usar una herramienta de control de versiones. Si no conoce ninguno, comience con uno de los tres principales sistemas distribuidos de control de revisión , Bazaar , Git o Mercurial . Registre la versión limpia, trabaje, verifique su trabajo tantas veces como desee y solicite a su sistema de control de versiones una diferencia entre la versión limpia y su trabajo.


gracias, ojalá pudiera tener uno en la vida real y volver al pasado al cometer un error :)
manuzhang
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.