2009-06-17 4 views
2

Предположим, у меня есть патч, который можно применить с -p0, есть ли инструмент для автоматического преобразования этого патча в патч -p1. Например, преобразованиепреобразование уровня полосы патчей

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; 
} 

В том же патч, но с другим именем каталога (обратите внимание на а, б) в передней части пути

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; 
} 

ответ

2

Просто преобразование имен файлов в заголовках куска сравнения хорошо достаточно.

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

Для других инструментов патч коверкая, я предлагаю patchutils, но это один настолько прост, что нет уже существующие утилиты для этого.

+0

Простой, возможно, когда вы знаете, как работает sed;) – shodanex

+0

Разве это не один из обрядов прохода по дороге, чтобы стать компьютерно-грамотным (или, по крайней мере, UNIX-грамотным)? :) – ephemient

Смежные вопросы