您的位置:首页 > 其它

diff和patch简单使用

2010-05-13 11:13 274 查看




上面的两个文件夹不同之处是前者有一个aa.txt文件,另外修改了cpu/s3c44b0/cpu.c文件

一共有这两处不同,下面来使用diff进行创建补丁包:

退到两者的上一级目录,执行diff -Nur u-boot-1.3.1/ u-boot-1.3.0/ > test.patch

参数解释:

-r --recursive Recursively compare any subdirectories found.递归各级目录
-N --new-file Treat absent files as empty.对待缺失文件方式(像aa.txt,一个目录有该文件,一个目录没有,这样没有该文件的那个目录把aa.txt看作有这个文件,但内容为空)

-u统一格式

现在有了补丁包我们怎么打补丁呢,先看一下补丁包的内容

diff -Nur u-boot-1.3.1/aa.txt u-boot-1.3.0/aa.txt
--- u-boot-1.3.1/aa.txt 2010-03-27 08:26:03.000000000 +0800
+++ u-boot-1.3.0/aa.txt 1970-01-01 08:00:00.000000000 +0800
@@ -1 +0,0 @@
-hhhhhhhhhhhhhhhhhhhhhhhh
diff -Nur u-boot-1.3.1/cpu/s3c44b0/cpu.c u-boot-1.3.0/cpu/s3c44b0/cpu.c
--- u-boot-1.3.1/cpu/s3c44b0/cpu.c 2010-03-27 08:19:01.000000000 +0800
+++ u-boot-1.3.0/cpu/s3c44b0/cpu.c 2010-03-27 08:37:34.000000000 +0800
@@ -32,6 +32,15 @@
#include <command.h>
#include <asm/hardware.h>

+/*
+this is test
+*/
+void test()
+{
+ printf("%s/n","hehe");
+}
+
+

加入我们进入u-boot-1.3.0这个目录,我们可以执行

patch -p1 < test.patch

这样我们就打上了补丁啦,这里为什么要是p1呢?1是指把u-boot-1.3.0给过滤掉,就是说补丁是从这个目录下开始的。

如果我们打完补丁以后发现又不想要这个补丁了,怎么办呢?执行patch -p1 -R < test.patch删除补丁就可以啦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: