能否使用patch工具删除文件或替换现有文件内容?
如何用patch删除或完全替换现有文件
核心思路:删除旧文件+新增同名新文件
要避免修改原文件时的上下文冲突,最稳妥的方式是先删除现有文件,再创建同名的新文件。这种方式不需要依赖原文件的任何内容,彻底规避了上下文不匹配导致的patch失败问题。
构造这类patch的方法
你可以通过git diff自动生成,也可以手动构造:
- 自动生成:在目标目录删除原
Makefile/Kconfig,创建你的新文件和驱动源码,然后用git diff --no-index对比修改前后的目录,或在git仓库提交修改后用git format-patch生成patch。 - 手动构造:格式示例如下(以
drivers/mydriver/目录为例):
diff --git a/drivers/mydriver/Makefile b/drivers/mydriver/Makefile deleted file mode 100644 index 8a7b6c5..0000000 --- a/drivers/mydriver/Makefile +++ /dev/null diff --git a/drivers/mydriver/Makefile b/drivers/mydriver/Makefile new file mode 100644 index 0000000..123abc4 --- /dev/null +++ b/drivers/mydriver/Makefile @@ -0,0 +1,2 @@ +obj-m += my_custom_driver.o +my_custom_driver-objs := my_driver_core.o my_driver_utils.o diff --git a/drivers/mydriver/Kconfig b/drivers/mydriver/Kconfig deleted file mode 100644 index 9d8e7f6..0000000 --- a/drivers/mydriver/Kconfig +++ /dev/null diff --git a/drivers/mydriver/Kconfig b/drivers/mydriver/Kconfig new file mode 100644 index 0000000..567def8 --- /dev/null +++ b/drivers/mydriver/Kconfig @@ -0,0 +1,4 @@ +config MY_CUSTOM_DRIVER + tristate "My Custom Driver" + help + This is my custom driver for XYZ hardware. # 新增自定义驱动源文件 diff --git a/drivers/mydriver/my_driver_core.c b/drivers/mydriver/my_driver_core.c new file mode 100644 index 0000000..a1b2c3d --- /dev/null +++ b/drivers/mydriver/my_driver_core.c @@ -0,0 +1,15 @@ +#include <linux/module.h> +#include <linux/kernel.h> + +static int __init my_driver_init(void) { + printk(KERN_INFO "My custom driver loaded\n"); + return 0; +} + +static void __exit my_driver_exit(void) { + printk(KERN_INFO "My custom driver unloaded\n"); +} + +module_init(my_driver_init); +module_exit(my_driver_exit); +MODULE_LICENSE("GPL");
应用patch的命令
在Linux源码树根目录执行:
patch -p1 < my_custom_driver.patch
如果原文件内容与patch删除块不匹配(比如原文件已被修改),加--force参数强制执行:
patch -p1 --force < my_custom_driver.patch
不推荐的方式:直接修改原文件
普通的修改型patch(比如diff -u old_Makefile new_Makefile)需要匹配原文件上下文,一旦原文件周边代码变动就会触发冲突,完全不符合你规避冲突的需求。
内容的提问来源于stack exchange,提问作者ddbug
相关产品推荐
相关产品推荐

