Pregunta

Tengo problemas para aplicar un parche a mi árbol de fuentes, y no es la habitual -p despojar problema. patch es capaz de encontrar el archivo de parche.

En concreto, mi pregunta es cómo leer / interpretar el .rej archivos patch crea cuando se produce un error en unos trozos. La mayoría de las discusiones de patch / diff que he visto no incluyen esto.

¿Fue útil?

Solución

Un simple ejemplo:

$ echo -e "line 1\nline 2\nline 3" > a
$ sed -e 's/2/b/' <a >b
$ sed -e 's/2/c/' <a >c
$ diff a b > ab.diff
$ patch c < ab.diff
$ cat c.rej
***************
*** 2
- line 2
--- 2 -----
+ line b

Como se puede ver: El viejo archivo contiene la línea 2 y el nuevo archivo debe contiene la línea b. Sin embargo, en realidad contiene la línea C (que no es visible en el archivo de rechazo).

De hecho, la forma más fácil de resolver este tipo de problemas es tomar el fragmento del archivo diff .diff / .patch, insertarlo en el lugar apropiado en el archivo que se puede conectar y luego comparar el código con la mano para averiguar , lo que realmente causan las líneas de conflicto.

O - alternativamente:. Obtener el archivo original (sin modificar), parche y ejecutar un triple combinación en el archivo

Otros consejos

Wiggle es una gran herramienta para aplicar .rej archivos cuando el parche no tiene éxito.

No soy un experto en tratar con archivos de revisión, pero me gustaría añadir un poco de claridad sobre cómo leerlos basada en mi comprensión de la información que contienen.

Los archivos .rej le dirá:

  • la diferencia entre el fichero original y .rej;
  • donde el código de problema se inicia en el archivo original, el número de líneas que sigue en ese archivo;
  • y donde el código se inicia en el nuevo archivo, y el número de líneas que pasa en ese archivo.

Así que le dio este mensaje, se señaló en el comienzo de mi archivo .rej:

diff a/www/js/app.js b/www/js/app.js (rejected hunks) @@ -4,12 +4,24 @@

veo que para mi archivo del problema (www/js/app), la diferencia entre el original (señalado como a/www/js/app.js en la primera línea) y el archivo .rej (señalado como b/www/js/) comienza en la línea 4 del original y se prolonga durante 12 líneas (la parte antes de la coma en @@ -4,12, +4,24 @@ en la línea dos), y comienza en la línea 4 de la nueva versión del archivo y continúa por 24 líneas (la parte después de la coma en @@ -4,12, +4,24 @@.

Para más información, véase la excelente visión de conjunto de archivos de revisión (que contienen la información observo anteriormente, así como detalles sobre líneas añadidas y / o entre las versiones de archivo) a http://blog.humphd.org/vocamus-906/ .

Las correcciones o aclaraciones bienvenida por supuesto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top