假设我有一个可以用-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; }
进入相同的补丁,但path前面有不同的目录名(注意a,b)
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; }
简单地在diff chunk头文件中转换文件名就足够了。
sed \ -e 's!^--- !&a/!' \ -e 's!^+++ !&b/!' \ < p0.patch \ > p1.patch
对于其他补丁修补工具,我会建议patchutils ,但这个很简单,没有预先存在的工具。