Pregunta

Supongamos que tengo un parche que se puede aplicar con -p0, ¿existe una herramienta para transformar automáticamente este parche en un parche -p1? Por ejemplo, transformando

Index: stdio-common/_i18n_number.h
===================================================================
--- stdio-common/_i18n_number.h (revision 8348)
+++ stdio-common/_i18n_number.h (working copy)
@@ -116,7 +116,7 @@ _i18n_number_rewrite (CHAR_T *w, CHAR_T
 #else

 static CHAR_T *
-_i18n_number_rewrite (CHAR_T *w, CHAR_T *rear_ptr)
+_i18n_number_rewrite (CHAR_T *w, CHAR_T *rear_ptr, CHAR_T *end)
 {
   return w;
 }

En el mismo parche pero con un nombre de directorio diferente (observe la a, b) delante de la ruta

Index: stdio-common/_i18n_number.h
===================================================================
--- a/stdio-common/_i18n_number.h (revision 8348)
+++ b/stdio-common/_i18n_number.h (working copy)
@@ -116,7 +116,7 @@ _i18n_number_rewrite (CHAR_T *w, CHAR_T
 #else

 static CHAR_T *
-_i18n_number_rewrite (CHAR_T *w, CHAR_T *rear_ptr)
+_i18n_number_rewrite (CHAR_T *w, CHAR_T *rear_ptr, CHAR_T *end)
 {
   return w;
 }
¿Fue útil?

Solución

Simplemente transformar los nombres de archivo en los encabezados de los fragmentos diferenciados es suficiente.

sed \
    -e 's!^--- !&a/!' \
    -e 's!^+++ !&b/!' \
    < p0.patch \
    > p1.patch

Para otras herramientas de eliminación de parches, sugeriría patchutils , pero este es tan simple que no hay una utilidad preexistente para ello.

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