Pergunta

Suponha que eu tenho um patch que pode ser aplicado com -p0, existe uma ferramenta para transformar automaticamente este patch em um patch -p1. Por exemplo, 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;
 }

Para o mesmo patch, mas com diferente nome de diretório (aviso a uma, b) na frente do caminho

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;
 }
Foi útil?

Solução

Simplesmente transformar os nomes nos cabeçalhos diff do pedaço é bom o suficiente.

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

Para outras ferramentas de correção de nomenclatura ter sido, eu sugiro patchutils , mas este é tão simples que não há nenhuma utilidade pré-existente para ele.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top