QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2341|回复: 3

读书笔记之三---diff和patch

[复制链接]
发表于 2004-8-12 13:22:36 | 显示全部楼层 |阅读模式
今天看到的是一个老题目,老手肯定是知道的了,不是希望可以给新手做一个入门;)


使用diff/patch为代码打补丁
1.diff的使用
   diff可以完成比较功能,生成补丁文件
格式::diff [option] oldfile newfile
常用的option选项有:
-r 对目录进行递归处理
-u 输出统一格式,diff有"传统"和"统一"两种格式,现在一般使用"统一"格式,比较而言,统一格式生成的文件大,但包含了更多的信息,有利于阅读与定位
-N 补丁中包含整个新文件
-a 补丁中包含二进制文件
  缺省时,diff向标准输出打印,所以一般都重定向到文件并以patch为后缀,也就是所谓的补丁文件
举例:
/*  oldfile hello.c */
void main()
{
printf("hello the world!\n");
}


/* newfile hello-new.c */
void main()
{
printf("HELLO THE WORLD!\n");
}

使用以下命令生成补丁文件hello.patch
$diff -u hello.c hello-new.c >hello.patch


diff可以对整个目录进行比较,生成补丁文件
例如有hello-1.0 和hello-1.1两个目录,其中hello-1.1为hello-1.0的更新
命令:
$diff -ruNa hello-1.0 hello-1.1 >hello-1.1.patch


2.patch的使用
把补丁运用到原代码上的命令为patch
patch [-b] suffix <patchfile

如果patch失败,patch会把成功的行打上补丁,失败的行存为以.rej为后缀的文件折,并生成原文件的备份,如果成功则不生成备份。 -b选项可以指定后缀名。
   注意:运行patch所在的目录应该与用diff生成补丁的时候一致。例如,上面在hello-1.0目录的上层目录生成补丁文件,patch时也应该在此目录进行。
发表于 2004-8-12 14:49:42 | 显示全部楼层
好,继续。
回复

使用道具 举报

发表于 2004-9-12 22:14:29 | 显示全部楼层
支持,呀,我也在学呢。
回复

使用道具 举报

发表于 2004-10-29 14:01:25 | 显示全部楼层
坚决支持楼主
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 05:30 , Processed in 0.077076 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表